Next Generation of Terrain rendering

Volumes instead of Heightfields

Here at first a list of supported features:

* Landscape + Caves ( 3D-Quadtree )
* Fragment+Vertex Shader
* Water (Environmental Bumpmapping)
* Glow to create light coronas without using billboards
* Perlin Noise for adding artificial details to close Geometry
* Maya .obj-file Loader
* VBOs to store geometry inside the graphics card
* 3 Blended Terraintextures+3 Detail Textures plus one additional texture used as selector for the 3 textures; this easily allowes to create streets without using high resolution textures

Now the Theory behind:

The main idea of HVox is to put voxel boxes of different sizes around the observer; all with same resolution, but different scale. From this Voxelvolumes is then a triangle-mesh generated, to render the scene hardware accelerated. So, here on the images, the volumes are all 64x64x64 voxels. The Landscpape in each of the lower Images consists of 5 of this boxes with scale factors 1,2,4,8 and 16 ; so the size of the displayed Volume can be(64*16)^3 = 1024x1024x1024. If the visitor moves, the inner (smallest) Box has to be updated most often, the higher sized ones only if necessary.

It is necessary to update the voxelvolumes while runtime; the update is too slow for animations, but fast enough to walk through fractal landscapes with infinite size without any preprocessing. The landscapes may consist e.g. of thousands of boxes and spheres which are added/subtracted from the voxelvolume. Updating of the voxelboxes has therefore to be done in an extra thread. Another advantage of this design is that almost all data, of the voxel-volumes and the geometry, can be reused, if a box needs to be recalculated. All triangle-data is stored in vertex-buffer-objects. This is very useful, as farer triangles are only updated rarely. The calculation for transforming the voxels in polygons is done very simple, so no marching cubes was necessary for this. Afterwards, the mesh is smoothed several times to remove the Lego-Look, and connected Triangles are searched to generate Strips for faster rendering.

For adding artificial detail to close terrain-geometry, also Perlin Noise was integrated. The current version also takes advantage of Pixel- and VertexShader for the reflective water-surface as well as for the terrain-texture. Furthermore, glow has been added, for emphasizing the light sources and water-reflections. The terrain texture is very special. It contains of 7 texture layer, where are 6 (3 detail + 3 common) are visible and one is used to make a selection between this. This makes it very easy to add roads onto the terrain afterwards for example. Already included is also an Alias-Wavefront .obj loader for scene entities.

References to similar Technologies:

[1] Iehova Terrain Library by Peter Venis
[2] Geek by Jack Strohm
[3] Cavernosa by Andrew Cox
[4] VoxLap by Ken Silverman
[5] The Tracy Project Homepage
[6] Paper about Interactive View-Dependent Rendering Of Large Isosurfaces
[7] Paper about Volumetric Visualization of Clouds
[8] A Paper about Adaptive Tesslatio #1
[9] Adaptive Tesselation of Subdivision Surfaces in OpenSG
[10] A Presentation about Subdivision Surfaces
[11] GoLD: Interactive Display of Huge Colored and Textured Models
[12] Far Voxels: A Multiresolution Framework for Interactive Rendering of Huge Complex 3D Models