Difference between revisions of "Orulex"

From OrbiterWiki
Jump to: navigation, search
(Adds Performance Guidelines)
Line 37: Line 37:
 
* 1Gb RAM + what Orbiter and OS takes + what local maps you will download.
 
* 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).
 
* 2-3Ghz CPU, ~1Gb of disk space, Fast Cheap internet (Lv9 heightmap is 466Mb download).
 +
 +
==Performance Guidelines:==
 +
* 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.
  
 
==Configuration==
 
==Configuration==

Revision as of 06:27, 9 April 2008

Project home: http://orbides.1gb.ru
Author: Artlav

Earth in Orulex 1.0

Orulex is a dynamic landscape generator add-on for Orbiter which allows you to add a global landable meshes to the planets.

Basic features (0.7.1)

  • 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)

  • 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.

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:

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:

  • 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.

Configuration

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).


Main configuration can be found in visosad\orulex.cfg

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

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


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

Planet functions

Function=... in visosad\orulex\planet_name.cfg

Planet function, written in postfix notation. Better not to edit if you don't know what postfix notation is.

Visosad\funcdrw program can display functions 3D graph. Requires OpenGL.


Operators:

  • sbcrater(scl) - defines surface base craters with scl height.
  • perlin(xd,yd,zd,band,scale) - perlin noise ground function
  • ridge(xd,yd,zd,band,scale) - ridged perlin noise ground function
  • 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.
  • sealevel(level) -sphere level cutoff function
  • +, -, --, *, /, sin, cos, max2, max3, min2, min3 - arithmetics.
  • ax,ay,az - world coordinates.
  • trim(f,min,max) - trims f into min<f<max.

Heightmaps

heightmap=Testmapmoon |000041.025|000041.225|-0033.8375|-0033.6375|00002000|0

Heightmap definition. Can be several of them.

All fields have fixed widths - 20|10|10|10|10|8|1

First is filename relative to visosad\orulex\hmap, then longitude of start, longitude of end, latitude of start, latitude of end, vertical scale, function


Where function is:

  • 0 - addition (height-map)
  • 1 - multiplication (mask-map).
  • 2 - replacation (plain height-map)

Heightmap file is a grayscale BMP with black as 0 and white as vertical scale altitude. 8bit BMP's seems to give errors.


Run-time configuration, found on page 2 of Orulex 3D Surface MFD:

  • Enabled - Enable/disable the drawing of the mesh.
  • Debug - Enable/disable the debug string
  • Collisions - Collision support on/off

Links

Orulex's Homepage by Artlav

Download at OrbiterHangar

Orbiter forum thread