I have a hard time understanding the idea behind ROAM algorithm

  • "Real-time, continuous level of detail rendering of height fields" Peter Lindstrom, David Koller, William Ribarsky, Larry F. Hodges, Nick Faust, Gregory A. Turner SAIC http://dl.acm.org/citation.cfm?id=237217
  • "ROAMing terrain: real-time optimally adapting meshes" Mark Duchaineau, Murray Wolinsky, David E. Sigeti, Mark C. Miller, Charles Aldrich, Mark B. Mineev-Weinstein http://dl.acm.org/citation.cfm?id=267028

The problem that I cannot grasp is that the whole idea behind the algorithm is that the terrain mesh is at all times divided to isosceles right angled triangles but when we arrange the terrain in a non flat mesh then the triangles that we divided the mesh into are supposed to be extended(?) to meet the height field requirements?

From what perspective is the terrain divided into those triangles and should they be isosceles right angled triangles generally or only when looked upon in up-down projection?


1 Answer 1


It is easiest to consider only the height map case, at least initially. In this case, our terrain starts as a flat plane, which should be raised by the height values provided by the supplied height map.

When viewed from directly above, the ROAM mesh representing this terrain should appear as a nested tree of isosceles triangles. However, the y-coordinate of each triangle vertex should be set to the matching value from the height map, which, when viewed from the side, will result in the ROAM mesh loosely following the contours of the height map.

Subdivision in ROAM is generally performed by taking the 3 corners of a given triangle, and averaging them to obtain the height at the center of the triangle. You then compare this height to the value from the height map at the same location, and if the interpolated value is sufficiently different, subdivide this triangle (since the child triangles are smaller, and will more closely approximate the underlying height field).

I will note that ROAM methods for terrain rendering have largely fallen out of favour, due to the development of level-of-detail techniques which are both simpler to implement, and a better fit for modern rendering hardware, in particular CLOD (Chunked Level Of Detail) and Geo-mipmapping approaches.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .