Level Of Detail

 

In its current form, this renderer uses a RTIN mesh, right triangulated irregular network. It makes use of your basic hardware accelerated triangle to compose a grid of polygons that will be subdivided to a chosen level of quality. This kind of mesh has some very interesting properties, mainly an hierarchical representation that maps triangles into leaf nodes and clusters of these triangles into the parent nodes recursively. This is very good. This means that this scheme fits perfectly into a binary tree with a data structure composed of reference pointers to the childs of any given node and all of its neighboring nodes.

These Binary Triangles Trees are not without constraints, one of them is the need to force split a node in order to maintain mesh consistency. This involves the need to perform some checks per node to see if any neighbor needs to be split to keep the mesh from breaking. But aside from that, there are only benefits, because it means we get a perfect triangle mesh without any holes and without any T-junctions whatsoever. Also and because of the nature of the triangles -- they are all isosceles -- the common problem of sliver triangles is a non issue.

Having a mesh that is being dynamically altered poses some problems, if one node of the binary tree changes its level of detail the mesh will either lose or gain one vertex, this means that a popping artifact will start to appear over the terrain as soon as vertices change their height value while the player is busy changing the view position. By design, this engine avoids any kind of popping by doing geomorphing per vertex, that is the vertices are smoothly interpolated from the parent's base edge height to the child's real height. This allows a seamless transition from frame to frame without visually disturbing artifacts.

All these fundamental concepts together make up for a very effective mesh rendering system.

 

 

T-Minus 5 The Multi-Server Real Time Strategy Engine
Copyright © 2000 Rui Ferreira, the standard disclaimer applies.