Difference between revisions of "Orulex"
m |
m (Fixed the fallout of a mindless copy and paste from the homepage. Does somebody actually READ the articles he creates?) |
||
Line 64: | Line 64: | ||
World Studio is both the Orulex terrain config system and the versatile planet editor. It was first released on April 1, 2008 same with Orulex 1.0. | World Studio is both the Orulex terrain config system and the versatile planet editor. It was first released on April 1, 2008 same with Orulex 1.0. | ||
− | ==Generator ideas and | + | ==Generator ideas and function description== |
− | + | ===Configuration=== | |
Orulex system configuration are done by World Studio program and config files editing, with options ranging from terrain polygon count to shapes of the worlds. | Orulex system configuration are done by World Studio program and config files editing, with options ranging from terrain polygon count to shapes of the worlds. | ||
2 PDF's with full description of world studio and file configuration can be found in the release package. | 2 PDF's with full description of world studio and file configuration can be found in the release package. | ||
− | |||
− | + | ||
+ | |||
+ | ===Basic ideas=== | ||
+ | |||
+ | Function string in config\terrain\planet_name.cfg | ||
* Planet functions is written in postfix notation. | * Planet functions is written in postfix notation. | ||
Line 80: | Line 83: | ||
* Functions specified the same way - f(x,y,z+w) is x y z w + f. | * Functions specified the same way - f(x,y,z+w) is x y z w + f. | ||
− | + | ===Terrain function=== | |
The terrain is represented by a 3 to 1 function with arguments being the position on the planet and output being the altitude at this position. The concept is similar to the plotting of 1D functions, like sine and cosine - the X axis represents the position, and Y axis represents the altitude: | The terrain is represented by a 3 to 1 function with arguments being the position on the planet and output being the altitude at this position. The concept is similar to the plotting of 1D functions, like sine and cosine - the X axis represents the position, and Y axis represents the altitude: | ||
Line 86: | Line 89: | ||
[[Image:Functions in Orulex 1.jpg|800px|thumb|center|Imagine the same thing in 4D, and that's how it is done in Orulex.]] | [[Image:Functions in Orulex 1.jpg|800px|thumb|center|Imagine the same thing in 4D, and that's how it is done in Orulex.]] | ||
− | + | ===List of terrain functions=== | |
− | [[Image:Terrain Functions.jpg| | + | ====Perlin noise==== |
+ | [[Image:Terrain Functions.jpg|100px|thumb|left|Classic perlin noise ground function.]] | ||
+ | ;Syntax:<nowiki>perlin(xd,yd,zd,band,scale)</nowiki> | ||
+ | ;xd,yd,zd:Distortion values for x,y,and z coordinates respectively. | ||
+ | ;band: The amount of noise bands to be used - the more of them the more detailed terrain is, but slower. | ||
+ | ;scale: The horizontal scale of the thing. It is roughly equivalent to the size of the pattern shown in viewer on the actual planet, i.e. if scale is 10000 then the pattern will be spread across 10 kilometers. | ||
− | + | Output is in -1..1 range. | |
− | + | ====Ridge noise==== | |
+ | [[Image:Terrain Functions 2.jpg|100px|thumb|left|Ridged perlin noise ground function. ]] | ||
− | + | ;Syntax:<nowiki>ridge(xd,yd,zd,band,scale)</nowiki> | |
− | |||
− | + | ;Syntax:<nowiki>perlin(xd,yd,zd,band,scale)</nowiki> | |
− | size of the pattern shown in viewer on the | + | ;xd,yd,zd:Distortion values for x,y,and z coordinates respectively. |
− | 10000 then the pattern will be spread across 10 kilometers. | + | ;band: The amount of noise bands to be used - the more of them the more detailed terrain is, but slower. |
+ | ;scale: The horizontal scale of the thing. It is roughly equivalent to the size of the pattern shown in viewer on the actual planet, i.e. if scale is 10000 then the pattern will be spread across 10 kilometers. | ||
Output is in -1..1 range. | Output is in -1..1 range. | ||
− | [[Image:Terrain Functions | + | ====Sea level==== |
+ | [[Image:Terrain Functions 3.jpg|100px|thumb|left|Sea level function with Perlin noise]] | ||
− | + | ;Syntax:<nowiki>sealevel(f,min)</nowiki> | |
− | + | Same as <nowiki>min2(min,f)</nowiki>. Returns <math>f</math> if <math>f>=min</math> and <math>min</math> if <math>f<min</math>. | |
− | + | Useful to truncate below the sphere part of the terrain function into flat valleys. Almost always should be removed if planet have ocean. If your planet have an ocean, make sure thet the underwater part of the function is not truncated! | |
− | + | ====Sinusoidal terrain==== | |
+ | [[Image:Terrain Functions 4.jpg|100px|thumb|left|Sinusoidal terrain]] | ||
− | + | ;Syntax: | |
− | + | <nowiki>sintf(xd,yd,zd,scale)</nowiki> | |
− | + | ;xd,yd,zd:Distortion values for x,y,and z coordinates respectively. | |
+ | ;scale: The horizontal scale of the thing. It is roughly equivalent to the size of the pattern shown in viewer on the actual planet, i.e. if scale is 10000 then the pattern will be spread across 10 kilometers. | ||
− | + | Output is in -1..1 range. | |
− | + | ====Cosinusoidal terrain==== | |
− | + | [[Image:Terrain Functions 5.jpg|100px|thumb|left|Cosinusoidal terrain]] | |
− | + | ;Syntax:<nowiki>costf(xd,yd,zd,scale)</nowiki> | |
− | + | ;xd,yd,zd:Distortion values for x,y,and z coordinates respectively. | |
+ | ;scale: The horizontal scale of the thing. It is roughly equivalent to the size of the pattern shown in viewer on the actual planet, i.e. if scale is 10000 then the pattern will be spread across 10 kilometers. | ||
− | + | Output is in -1..1 range. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ====Curve function==== | |
+ | ;Syntax:<nowiki>curv(n,f,x1,y1,x2,y2,...,x(n-1)/2,y(n-1)/2)</nowiki> | ||
− | + | Input/Output curve for f by points of xi,yi, lagrange interpolated. It is a very powerful tool, allowing to map the inputs to according to specific curve to the output, changing gradients and similar things. The I/O curve is too big a topic for this manual. | |
− | + | For example: Callisto | |
− | |||
− | * | + | ====Other operators/functions==== |
+ | ;ax,ay,az:world coordinates | ||
+ | ;+, -, --, *, /, sin, cos, tan, ln, pow, round, trunc, sqr, sqrt max2, max3, min2, min3: Arithmetics and basic math | ||
+ | ;trim(f,min,max): trims f into <math>min<f<max</math> | ||
==See Also== | ==See Also== |
Revision as of 19:52, 14 April 2008
Project home: http://orbides.1gb.ru |
Orulex is a dynamic landscape generator add-on for Orbiter which allows you to add a global landable mesh to the planets. Simply said, it turns flat planets into mountainous planets.
Basic features (1.0)
- Generates planet terrain in Orbiter on the fly, using real data or fractal functions.
- Easily downloadable textures and heightmaps data for Earth, and other planets.
- Lv11 global Orbiter and Lv6-Lv22 local downloaded textures (LandSat, USGS) support.
- Collision detection support possibilities and SDK interface
System Requirements:
Out of the box:
- 256Mb RAM + what Orbiter and OS takes.
- 1.5+Ghz CPU, good video card (if it runs Orbiter Lv10+NASSP with good FPS it will run Orulex as if nothing is here).
Hi-quality:
- 1Gb RAM + what Orbiter and OS takes + what local maps you will download.
- 2-3Ghz CPU, ~1Gb of disk space, Fast Cheap internet (Lv9 heightmap is 466Mb download).
Performance Guidelines (1.0)
- If you got a multi-core CPU, it is almost always better to keep multithread mode on.
- If you got single-core CPU and Orulex feels slow on response or pre-computation takes longer than 10-15 seconds, try turning multithread mode off.
- Reducing polygon count may help if you got an old video card.
- Reducing LevLimit may give a more stable-looking landscape, but dropping quality exponentially.
- If you got FPS jerks on older/single-core PC's, look on texture timings.
TexGen-H defines time slice allocated when there is a lot to generate, TexGen-L defines time slice allocated when there are only small changes, like when you are flying around. Reducing them make Orbiter more responsive and terrain less responsive. Timings are not defined in multithread mode.
Known bugs/issues (1.0)
- Windows Vista random CTD.
- Dislocated patches when flying with multithreaded mode on.
- Textures getting colorfully random on some machines (probably Orbiter/DirectX bug on older systems).
Data download Servers List
Earth
- SRTM global Earth terrain
- NASA derived global 30 meters per pixel satellite image mosaic
- NASA derived global 15 meters per pixel satellite image mosaic, donated and processed by I-Cubed using equipment from Isilon Systems.
- USGS Digital Ortho
- USGS Urban Area Ortho
- Pseudo color 15m Landsat mosaic provided by MDA Federal, scenes comprised from early 2000s
Moon
- Clementine global Moon terrain
- Clementine 40xx
- Clementine 30xx
Mars
- MOLA global Mars terrain
- Mars THEMIS Color
Venus
- Magellan Imaging Radar (Color)
- Magellan Imaging Radar (Grey)
World Studio
World Studio is both the Orulex terrain config system and the versatile planet editor. It was first released on April 1, 2008 same with Orulex 1.0.
Generator ideas and function description
Configuration
Orulex system configuration are done by World Studio program and config files editing, with options ranging from terrain polygon count to shapes of the worlds. 2 PDF's with full description of world studio and file configuration can be found in the release package.
Basic ideas
Function string in config\terrain\planet_name.cfg
- Planet functions is written in postfix notation.
- In postfix, the sign of operation goes after the operands, so a+b will be ab+.
- It have a significant comprehensive advantage, since there is no ()'s.
- a+((b+f)*c+d/e) will be written as a b f+c*d e/++.
- Functions specified the same way - f(x,y,z+w) is x y z w + f.
Terrain function
The terrain is represented by a 3 to 1 function with arguments being the position on the planet and output being the altitude at this position. The concept is similar to the plotting of 1D functions, like sine and cosine - the X axis represents the position, and Y axis represents the altitude:
List of terrain functions
Perlin noise
- Syntax
- perlin(xd,yd,zd,band,scale)
- xd,yd,zd
- Distortion values for x,y,and z coordinates respectively.
- band
- The amount of noise bands to be used - the more of them the more detailed terrain is, but slower.
- scale
- The horizontal scale of the thing. It is roughly equivalent to the size of the pattern shown in viewer on the actual planet, i.e. if scale is 10000 then the pattern will be spread across 10 kilometers.
Output is in -1..1 range.
Ridge noise
- Syntax
- ridge(xd,yd,zd,band,scale)
- Syntax
- perlin(xd,yd,zd,band,scale)
- xd,yd,zd
- Distortion values for x,y,and z coordinates respectively.
- band
- The amount of noise bands to be used - the more of them the more detailed terrain is, but slower.
- scale
- The horizontal scale of the thing. It is roughly equivalent to the size of the pattern shown in viewer on the actual planet, i.e. if scale is 10000 then the pattern will be spread across 10 kilometers.
Output is in -1..1 range.
Sea level
- Syntax
- sealevel(f,min)
Same as min2(min,f). Returns if and if .
Useful to truncate below the sphere part of the terrain function into flat valleys. Almost always should be removed if planet have ocean. If your planet have an ocean, make sure thet the underwater part of the function is not truncated!
Sinusoidal terrain
- Syntax
sintf(xd,yd,zd,scale)
- xd,yd,zd
- Distortion values for x,y,and z coordinates respectively.
- scale
- The horizontal scale of the thing. It is roughly equivalent to the size of the pattern shown in viewer on the actual planet, i.e. if scale is 10000 then the pattern will be spread across 10 kilometers.
Output is in -1..1 range.
Cosinusoidal terrain
- Syntax
- costf(xd,yd,zd,scale)
- xd,yd,zd
- Distortion values for x,y,and z coordinates respectively.
- scale
- The horizontal scale of the thing. It is roughly equivalent to the size of the pattern shown in viewer on the actual planet, i.e. if scale is 10000 then the pattern will be spread across 10 kilometers.
Output is in -1..1 range.
Curve function
- Syntax
- curv(n,f,x1,y1,x2,y2,...,x(n-1)/2,y(n-1)/2)
Input/Output curve for f by points of xi,yi, lagrange interpolated. It is a very powerful tool, allowing to map the inputs to according to specific curve to the output, changing gradients and similar things. The I/O curve is too big a topic for this manual.
For example: Callisto
Other operators/functions
- ax,ay,az
- world coordinates
- +, -, --, *, /, sin, cos, tan, ln, pow, round, trunc, sqr, sqrt max2, max3, min2, min3
- Arithmetics and basic math
- trim(f,min,max)
- trims f into
See Also
Links
Main
Additionals
WIP MeshLand 2, Collision Detection support for Orulex, Unstable
Interface SDK (Delta-Glider samples included)
Pre-composed heightmaps
Everest Lv11 textures and heightmaps (5.3Mb)
Grand Canyon Lv13 textures and heightmaps (9Mb)
Demonstaration video