TINMAN 3D / REALTIME TERRAIN
Software Development Kit - User Manual

Feature Gallery

The following images give an impression of what Tinman 3D can do.


Data-driven continuous level-of-detail terrain mesh

Smooth terrain mesh with queryable ambient occlusion

Data-driven surface texturing (tri-planar + standard UV)

Real-time shadows (LiSPSM + CSM)

Data-driven planting of foliage and other 3D objects

Queryable per-vertex displacement for terrain materials

Real-time persistent painting and deformation of terrain mesh

Up to 256 distinct materials - anywhere at any resolution
   

1m DEM with color-ramp and ambient occlusion

1m DEM + 50cm imagery using smooth texture atlas

Silent City of Rocks - NED 1/9" + GoogleMaps

High resolution reconstruction of mining area

Terrain mesh with view frustum and horizon culling

Robust shadow-mapping setup for terrain mesh

Georeferenced terrain decal texture

Vector shape layers on terrain mesh

Real-time debugging helpers

Interactive data inspection & editing

Real-time reprojection and rendering of geodata

Interactive data inspection & preparation

Terrain Mesh

Tinman 3D uses rasters as input for creating terrain meshes and textures.

The basic process of creating a terrain mesh from raster data is simple:

  1. The full resolution raster is stored using an efficient storage scheme.
  2. The application defines a selection criterion, the terrain engine chooses raster samples accordingly. This creates the reduced raster.
  3. The samples of the reduced raster are triangulated into a single triangle strip. This yields a GPU-friendly triangulated irregular net (TIN).

Tinman 3D provides powerful implementations for these steps.

1. Full Resolution Raster 2. Reduced Raster 3. Terrain Mesh

You will never again associate "CLOD" with "slow". The dynamic Continuous Level-Of-Detail mode of Tinman 3D is fast enough for real-time applications.

The basic meaning of CLOD is that the whole terrain is represented by a single triangle mesh. The mesh triangles can differ in size, which makes it possible to capture different levels of detail at once. A CLOD mesh is always contiguous, it does not have holes or T-junctions. Terrain meshes created by Tinman have an inherent quadtree structure, where each node represents a mesh sector. All terrain operations can be performed on the whole mesh or on specific sectors. 

Using a CLOD approach for terrain rendering has various benefits:

Benefits of Continuous Level-Of-Detail
  1. High Detail
    CLOD can capture high local detail. If necessary, terrain mesh triangles can become very small - even down to a single pixel. This makes it possible to encode terrain data into mesh vertices which otherwise would have to be packed into textures. Effectively, this will save GPU memory and bandwidth.  
     
  2. Low Detail
    Only few triangles are used to represent terrain regions with low detail. The spared triangles will be used to capture high detail instead. 
     
  3. Vertex Colors
    The terrain surface can be textured by using per-vertex diffuse colors. This is typically used to paint distant terrain parts. This allows to get rid of the terrain base texture which otherwise becomes mandatory. 
     
  4. Vertex Materials
    Surface materials can be encoded as per-vertex weights. Usually material weights are used to texture near terrain parts. Materials are also used to control placement of ground objects (grass, plants, rocks, etc.). Tinman encodes independent weighted combinations of four materials out of a palette 256 possible materials, for each vertex. This makes terrain detail textures obsolete. 
     
  5. Vertex Normals
    A CLOD mesh accurately represents the terrain surface. Because of this, per-vertex normal, tangent and bitangent vectors are accurate enough for being used in shading and lighting computations. It is not necessary to use separate normal textures. Lightmaps can also be encoded as per-vertex data. 
     
  6. Smooth Mesh
    Tinman performs cubic interpolation at runtime in order to create smooth terrain surfaces, independently of the resolution of the input terrain data. This provides high-quality per-vertex data, which in turn allows an application to use advanced rendering techniques (for example, displacement mapping using GPU tesselation) with great success.

Unlimited Detail

The maximum dimensions of a Tinman 3D raster are 2^30+1 by 2^30+1. In other words: 1073741825 by 1073741825.

Rasters are sparse, so an empty raster will not consume a single byte, independent of its size. 

Current realtime 3D engines have an upper limit orders of magnitude below that. Here are some examples:

Unreal Engine:
Maximum "Recommended Landscape Size" : 8129 by 8129
https://docs.unrealengine.com/latest/INT/Engine/Landscape/TechnicalGuide/#performanceconsiderations

CryEngine:
Maximum "Recommended Terrain Size" : 4096 by 4096
http://docs.cryengine.com/display/SDKDOC2/Creating+a+New+Level

Unity:
Maximum "Heightmap Resolution" per Terrain object : 4097 by 4097
http://docs.unity3d.com/Manual/terrain-OtherSettings.html

A typical game terrain spans an area of 16km by 16km. Using the maximum terrain sizes mentioned above, this would result in ground detail of 4m resp. 8m. Working around these limitations in order to improve ground detail requires considerable amount of manual work and design.

With Tinman 3D, you no longer have to worry about terrain size. You simply choose how big your terrain should be - then you decide how much detail you want to paint on it; on-the-fly and in real-time. The Demo Application uses a detail map of size 262144 by 262144. This would provide ground detail for a typical game terrain of 6cm. The possibility to paint arbitrary detail everywhere onto the terrain simplifies development and saves time.

With a maximum size raster, Tinman 3D can easily represent the entire Earth with 9mm of gound detail.