Editing Orulex

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
 
{{Addon|
 
{{Addon|
 
1=http://orbides.1gb.ru|
 
1=http://orbides.1gb.ru|
2=Artyom "Artlav" Litvinovich
+
2=Artlav
 
}}
 
}}
 
[[Image:Oru-080401-1.jpg|200px|thumb|right|Earth in Orulex 1.0]]
 
[[Image:Oru-080401-1.jpg|200px|thumb|right|Earth in Orulex 1.0]]
[[Image:Oru-080401-2.jpg|200px|thumb|right|Brighton Beach Crater on the Moon in Orulex 1.0]]
+
[[Image:Oru-080401-2.jpg|200px|thumb|right|Brighton Beach Crafter on the Moon in Orulex 1.0
[[Image:Oru-080401-3.jpg|200px|thumb|right|Venus in Orulex 1.0]]
+
]]
[[Image:Oru-080401-7.jpg|200px|thumb|right|Nereid in Orulex 1.0]]
 
  
'''Orulex''' is a dynamic landscape generator add-on for Orbiter which allows users to add a global landable mesh to planets.
+
'''Orulex''' is a dynamic landscape generator add-on for Orbiter which allows you to add a global Supported functions are perlin noise, ridged perlin, sine and cosine terrain, i/o curve, crater, auxiliarys.
Simply said, it turns flat planets into mountainous planets.
 
  
Latest stable version is 1.0
+
==Basic features (0.7.1)==
Latest development version is 1.2_080527
+
* Run-time generation of planet-wide meshes based on given mathematical expression.
 +
* Supported functions are perlin noise, ridged perlin, sine and cosine terrain, i/o curve, crater, auxiliarys.
 +
* Global and local heightmaps
 +
* Automatic carving of surface bases into craters.
 +
* Partially compatible with Visosad collision detection system.
 +
 
 +
==Known bugs/issues (0.7.1)==
 +
* Static textures all over the planet.
 +
* Blinking of the texture at night and with clouds.
 +
* No mesh visible in windowed mode on some GPUs.
  
 
==Basic features (1.0)==
 
==Basic features (1.0)==
Line 18: Line 25:
 
* Easily downloadable textures and heightmaps data for Earth, and other planets.
 
* Easily downloadable textures and heightmaps data for Earth, and other planets.
 
* Lv11 global Orbiter and Lv6-Lv22 local downloaded textures (LandSat, USGS) support.
 
* Lv11 global Orbiter and Lv6-Lv22 local downloaded textures (LandSat, USGS) support.
* Collision detection support possibilities and SDK interface
+
 
 +
==Improvements from 0.9.4 to 1.0==
 +
* Lots of bugs fixed
 +
* Significant performance improvements.
 +
* Memory management was significantly improved, the textures are no longer resides fully in RAM, so even Lv11 textures only needs 100Mb on average instead of ~1Gb. Consequently,
 +
* Lv 9-11 textures supported.
 +
* Visual improvements by recalibrating the LOD algorithm - the textures are generated from the camera point, and the high resolution should be more closer to the camera, the generation takes camera motion into account
 +
* [[World Studio]] - a versatile planet editor and Orulex config tool. Featuring everything from changing settings to downloading hi-res tiles and saving them as Orbiter-readable SURFTILEs.
 +
 
 +
==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).
  
 
==System Requirements:==
 
==System Requirements:==
Line 29: Line 48:
 
* 2-3Ghz CPU, ~1Gb of disk space, Fast Cheap internet (Lv9 heightmap is 466Mb download).
 
* 2-3Ghz CPU, ~1Gb of disk space, Fast Cheap internet (Lv9 heightmap is 466Mb download).
  
==Performance Guidelines (1.0)==
+
==Performance Guidelines:==
 
* If you got a multi-core CPU, it is almost always better to keep multithread mode on.
 
* 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.
 
* 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.
Line 37: Line 56:
 
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.
 
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)==
+
==Data Servers List:==
* 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'''
 
'''Earth'''
 
* SRTM global Earth terrain
 
* SRTM global Earth terrain
Line 64: Line 78:
 
* Magellan Imaging Radar (Grey)
 
* Magellan Imaging Radar (Grey)
  
==World Studio==
+
==Configuration==
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.
+
'''Syntax for all config files:'''
 +
* parameter = value
 +
* Any amount of tabs or spaces around = sign.
 +
* // means star of line-comment (all of the line after it is ignored)
 +
* { opens the large comment, } closes the large comment, everything between them is ignored.
 +
* 1 denotes TRUE/ON, 0 denotes FALSE/OFF.
 +
* All other numbers are in metres (unless specified otherwise), in real number format (±1.23±45).
  
==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.
+
'''Main configuration''' can be found in visosad\orulex.cfg
2 PDF's with full description of world studio and file configuration can be found in the release package.
 
  
 +
All pathes are relative to the Orbiter directory.
  
 +
Global features:
  
 +
* '''Enabled''' - Enable/disable the system
 +
* '''Debug''' - Enable/disable the debug string
 +
* '''Collisions''' - Collision support on/off
 +
* '''Multithread''' - Multithreaded mode on/off
 +
* '''Reflection''' - Reflection model
  
===Basic ideas===
+
Default values for all planets (used if not specified in planet cfg):
 +
* '''MaxPolyCount''' - Maximum polygon count in the terrain should be in 20000-100000 range.
 +
* '''Altlimit''' - Upper limit for terrain drawing.
 +
* '''Blendlimit''' - Lower limit of terrain vanishing (starts at Altlimit-Blendlimit)
 +
* '''Levlimit''' - Terrain level limit
 +
* '''GlobalHMapLimit''' - Global heightmap level limit
 +
* '''PriT''' - Preprocess timeslice
 +
* '''SecT''' - Split/Merge timeslice
 +
* '''TriT''' - TexGen-L timeslice
 +
* '''QuaT''' - TexGen-H timeslice
 +
* '''Configs''' - Configuration path
 +
* '''Textures''' - Textures path
 +
* '''Heightmaps''' - Heightmap path
  
Function string in config\terrain\planet_name.cfg
 
  
 +
Planet textures are loaded from Orbiter textures directories, with Orbiter's default prioritites.
 +
 +
Planets configuration can be found in config/terrain/planet_name.cfg
 +
 +
 +
'''In planet_name.cfg'''
 +
The MaxPolyCount, Altlimit, Blendlimit have the same meaning as in name config, but for this planet only.
 +
 +
Terrain settings:
 +
* '''seed''' - The Number, that defines the planet.
 +
* '''radius''' - Radius of mesh. Better be near radius of planet.
 +
* '''function''' - Planet terrain function. Described below.
 +
* '''sbcrater''' - Surface base craters ridge height
 +
* '''microtexture''' - Microtexturing
 +
* '''belowsphere''' - Below sphere terrain
 +
* '''glhmaplevel''' - Max global heightmap level
 +
 +
 +
'''Heightmaps:'''
 +
Defined by adding following string to the planet_name.cfg
 +
 +
'''heightmap=Name|Lon of start|Lon of end|Lat of start|Lat of end|Scale|Function|Flag|Use'''
 +
 +
'''height8map=Name|Lon of start|Lon of end|Lat of start|Lat of end|Scale|Function|Flag|Use'''
 +
 +
'''heightmaphei=Name|Lon of start|Lon of end|Lat of start|Lat of end|Scale|Function|Flag|Use'''
 +
 +
All fields have fixed widths - 40|10|10|10|10|8|1|1|1
 +
 +
First is filename relative to Heightmaps directory, then longitude of start, longitude of end, latitude of start, latitude of end, vertical scale, function, flag, use flag
 +
* '''heightmap''' - Heightmap file is a grayscale BMP with black as 0 and white as vertical scale altitude.
 +
* '''height8map''' - Heightmap file is a grayscale BMP with altitude asn sint8.
 +
* '''heightmaphei''' - Heightmap file is a Orulex HEI.
 +
 +
 +
'''Heightmap functions are:'''
 +
* '''0''' - addition (height-map)
 +
* '''1''' - multiplication (mask-map).
 +
* '''2''' - replacation (plain height-map)
 +
* '''3''' - replacation-truncation (plain height-map with ocean truncated)
 +
 +
 +
'''Colormaps:'''
 +
Defined by adding following string to the planet_name.cfg
 +
'''colormap=Name|Lon of start|Lon of end|Lat of start|Lat of end|Scale|Function'''
 +
All fields have fixed widths - 40|10|10|10|10|8|1|1|1
 +
First is filename relative to Textures or Textures2 directory, then longitude of start, longitude of end, latitude of start, latitude of end, vertical scale, function
 +
Colormap file is either BMP or DDS.
 +
 +
 +
'''Flat spaces:'''
 +
Defined by adding following string to the planet_name.cfg
 +
'''flat=Lon of start Lon of end Lat of start Lat of end'''
 +
 +
 +
'''SURFTILES:'''
 +
Just paste the
 +
BEGIN_SURFTILELIST
 +
END_SURFTILELIST
 +
part of the Orbiter base cfg into Orulex planet cfg, '''removing empty lines'''.
 +
See earth.cfg for example.
 +
 +
 +
'''Predefined terrain functions for randomator:'''
 +
* '''1 1 1 3 6000 perlin''' = dense selenic world
 +
* '''1 1 1 3 10000 perlin''' = selenic world
 +
* '''1 1 1 4 15000 perlin''' = sparse selenic world
 +
* '''1 1 1 3 20000 1000 1 1 1 4 10000 ridge sin * + ridge''' = tightly-ridged world
 +
* '''1 1 1 3 100000 10000 1 1 1 3 100000 ridge sin * + ridge''' = ridge-cratered world
 +
* '''1 1 1 1 10000 ridge cos 0.6- 5*''' = channel-cracked world
 +
* '''1.1 1.1 1.1 3 10000 ridge 1 0 1 1 1 0.4 0 0.2 0 0 1 0.2 1 1 1 3 100000 ridge trim 0.2-2* 9 curv trim*''' = ridged-valleys world
 +
 +
==Functions==
 +
'''Planet functions''' (Function string in config\terrain\planet_name.cfg)
 +
 +
'''Basic ideas:'''
 
* Planet functions is written in postfix notation.
 
* Planet functions is written in postfix notation.
 
* In postfix, the sign of operation goes after the operands, so a+b will be ab+.
 
* In postfix, the sign of operation goes after the operands, so a+b will be ab+.
Line 86: Line 197:
 
* 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===
+
'''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:
  
 
[[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===
+
'''Terrain Functions:'''
 +
[[Image:Terrain Functions.jpg|200px|thumb|left|'''perlin'''(xd,yd,zd,band,scale)]]
 +
 
 +
 
 +
 
 +
Classic perlin noise ground function.
 +
 
 +
'''xd,yd,zd''' is distortion values for x,y,and z coordinates respectively.
 +
 
 +
'''band''' is the amount of noise bands to be used - the more of them the
 +
more detailed terrain is, but slower.
  
====Perlin noise====
+
'''scale''' is the horizontal scale of the thing. It is roughly equivalent to the
[[Image:Terrain Functions.jpg|100px|thumb|left|Classic perlin noise ground function.]]
+
size of the pattern shown in viewer on the actuall planet, i.e. if scale is
;Syntax:<nowiki>perlin(xd,yd,zd,band,scale)</nowiki>
+
10000 then the pattern will be spread across 10 kilometers.
;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.
 
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>
+
 
;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.
+
[[Image:Terrain Functions 2.jpg|200px|thumb|left|'''ridge'''(xd,yd,zd,band,scale)]]
;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.
+
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
Ridged perlin noise ground function. Same parameters as above.
  
 
Output is in -1..1 range.
 
Output is in -1..1 range.
  
====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.
+
[[Image:Terrain Functions 3.jpg|200px|thumb|left|'''sealevel'''(f,min)]]
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
Same as min2('''min,f'''). Returns '''f''' if '''f>=min''' and '''min''' if '''f<min'''.
 +
 
 +
Useful to truncate below the sphere part of the terrain function into
 +
flat valleys.
 +
 
 +
Almost always should be removed if planet have ocean.
 +
 
 +
<-(example with perlin)
 +
 
 +
If your planet have an ocean, make sure thet the underwater part
 +
of the function is not truncated!
 +
 
 +
 
 +
 
 +
 
 +
[[Image:Terrain Functions 4.jpg|200px|thumb|left|'''sintf'''(xd,yd,zd,scale)]]
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
Sinusoidal terrain.
 +
 
 +
'''xd,yd,zd''' is distortion values for x,y,and z coordinates respectively.
 +
 
 +
'''scale''' is the horizontal scale of the thing.
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
[[Image:Terrain Functions 5.jpg|200px|thumb|left|'''costf'''(xd,yd,zd,scale)]]
 +
 
 +
 
 +
 
 +
 
 +
 
  
====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====
+
Cosinusoidal terrain.
;Syntax:<nowiki>curv(n,f,x1,y1,x2,y2,...,x(n-1)/2,y(n-1)/2)</nowiki>
 
  
 +
'''xd,yd,zd''' is distortion values for x,y,and z coordinates respectively.
  
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.  
+
'''scale''' is the horizontal scale of the thing.
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==
 
[[Meshland]]
 
  
==Download Links==
 
[http://orbides.1gb.ru/orulex.php Orulex's Homepage by Artlav]
 
  
[http://www.orbiter-forum.com/showthread.php?t=2007 Development version Orbiter forum thread]
 
  
[https://www.orbiter-forum.com/resources/orulex_land_gen-v1-2.2390/ Orulex_Land_Gen-v1.2] Orbiter Forum/Resources.
 
  
[http://www.orbiter-forum.com/showthread.php?t=999 1.0 Orbiter forum thread]
 
  
==Additional links==
+
* '''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 powerfull 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. Example: Callisto
  
'''Extensions'''
 
  
[http://orbides.1gb.ru/orbf/MLVS-WIP-080327.zip WIP MeshLand 2, Collision Detection support for Orulex, Unstable]
+
Other operators/functions:
 +
* '''ax,ay,az''' - world coordinates.
  
[http://orbides.1gb.ru/orbf/OrulexSDK-allvers.zip Interface SDK (Delta-Glider samples included)]
+
* '''+, -, --, *, /, sin, cos, tan, ln, pow, round, trunc, sqr, sqrt max2, max3, min2, min3''' - arithmetics and basic math.
  
'''Pre-composed heightmaps'''
+
* '''trim'''(f,min,max) - trims f into min<f<max.
  
[http://orbides.1gb.ru/orbf/earth-hmap-lv8.zip Earth Lv8 heightmap (84Mb)]
+
==See Also==
 +
[[World Studio]]
  
[http://orbides.1gb.ru/orbf/mars-hmap-lv8.zip Mars Lv8 heightmap (82Mb)]
+
==Links==
 +
[http://orbides.1gb.ru/orulex.php Orulex's Homepage by Artlav]
  
[http://orbides.1gb.ru/orbf/moon-hmap-lv8.zip Moon Lv8 heightmap (81Mb)]
+
[http://www.orbithangar.com/searchid.php?ID=2686 Download at OrbiterHangar]
  
[http://orbides.1gb.ru/orbf/everest_lv11.zip Everest Lv11 textures and heightmaps (5.3Mb)]
+
[http://www.orbitersim.com/Forum/default.aspx?g=posts&t=15133 Orbiter forum thread]
  
[http://orbides.1gb.ru/orbf/grand_canyon_lv13.zip Grand Canyon Lv13 textures and heightmaps (9Mb)]
+
[http://orbides.1gb.ru/orbf/MLVS-WIP-080327.zip MeshLand 2, Collision Detection support for Orulex]
  
'''Demonstaration video'''
+
[http://orbides.1gb.ru/orbf/OrulexSDK-allvers.zip Interface SDK (Delta-Glider samples included)]
  
[http://orbides.1gb.ru/orbf/oru-flight-080321-x264.avi China flying in Gregburch's Swift1 (x264, 21 MB)]
+
[http://orbides.1gb.ru/orbf/oru-flight-080321-x264.avi China flying in Gregburch's Swift1 (x264, 21 MB]
  
[http://orbides.1gb.ru/orbf/oru-flight-080321-xvid.avi China flying in Gregburch's Swift1 (xVid, 31 MB)]
+
[http://orbides.1gb.ru/orbf/oru-flight-080321-xvid.avi China flying in Gregburch's Swift1 (xVid, 31 MB]
  
[[Category: Articles]]
 
 
[[Category:Add-ons]]
 
[[Category:Add-ons]]
 +
[[Category:Celestial body add-ons]]

Please note that all contributions to OrbiterWiki are considered to be released under the GNU Free Documentation License 1.2 (see OrbiterWiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)

Template used on this page: