LOD algorithms can be of considerable advantage with landscapes because of the large number of polygons needed to draw an entire landscape. The lack of natural partitioning boundaries for landscape meshes makes it difficult to use other LOD or culling techniques which are based on small, separate objects. An extreme example of this is the portal approach described in Chapter 5, which is poorly suited for landscape rendering because of the lack of obvious cell or sector structure in an arbitrary landscape. Thus arises the need for other LOD techniques for landscapes.
Rendering a landscape stored as a height field can be done in a number of ways. One way is to generate curved surface patches which go through the points of the height field, thus creating a smooth landscape which can be dynamically tessellated to the desired level of detail. We could tessellate more for patches closer to the viewer, and fewer for distant patches. However, a critical problem with this approach is to subdivide the patches in a way which avoids cracks between the edges of adjacent patches, since they will be very noticeable. Cracks appear when adjacent edges have different numbers of vertices or differently positioned vertices, so avoiding cracks means ensuring that adjacent edges always line up.
Another way of rendering landscapes is to create triangles between alternate rows of the height field, as we saw with parametric bicubic surfaces, and to render these triangles. Instead of always rendering all of the triangles, we can try to use a dynamic LOD scheme to reduce the number of rendered polygons in distant areas. The ROAM algorithm is one such algorithm. ROAM stands for Real-time Optimally Adapting Meshes [DUCH97]. This algorithm relies in a special data structure, the triangle bintree, which allows for run-time, view-dependent alteration and simplification of parts of the landscape mesh based on their distance from the camera.
Finally, it is also worth mentioning that for small landscapes with relatively few polygons, and fast enough graphics acceleration hardware, it is sometimes possible to completely ignore LOD issues and simply render all triangles within the landscape for every frame. This could conceivably be used in a mixed indoor/outdoor engine, where the outdoor parts of the world are isolated small landscapes. The isolated small landscapes could then be rendered in their entirety. If we combine this with a portal scheme and place the landscape areas in their own sectors, the landscape regions do not degrade rendering performance when they are completely blocked by intervening walls of an indoor region.
NOTE One older way of rendering landscapes relies on rendering the height field as a ^^ series of vertical strips in front-to-back order, and restricting camera movement such that rotation around the VFW vector is forbidden; in other words, the VUP vector always points straight up. By restricting camera movement in this way, the projection of the height field to the screen always results in a series of perfectly vertical strips. By rendering these front to back, we can cull large regions of the landscape which are obscured by nearer, higher vertical strips. We can only see parts of the landscape to which the line of sight is not blocked by the nearer strips, meaning that an intersection calculation from the eye through the top of the highest foreground strip determines which is the next visible part of the background. Due to the restriction on camera movement, and the lack of hardware acceleration for this method, this scheme has lost popularity in recent years, though the scheme does provide an interesting alternative.
Was this article helpful?