This is my most recently completed project. I worked on this with Eric Raue, who is currently the president of the Game Developers Club at SFU. Together we implemented a real-time optimally adapting mesh (ROAM) program, not just on PC and Linux, but also on the Wii! The demo on the Wii uses the Wii Balance Board to fly around the terrain and the Wii Remote to look around. The above picture represents a debug view of the camera (represented by the blue square), the view frustum (represented by the yellow lines), and the triangulated terrain (represented by all the triangles).
The general idea is that you start with a base triangulation of the terrain which is continually split until a desired level of detail is reached. In the above picture we can see a simple error metric implementation, which is to split triangles closest to the camera so we have a higher level of detail around the camera and within the view frustum. Another error metric implemented was to use the variance in height from the original mesh to our approximation. The original ROAM paper suggests using a wedgie based error metric and can be read here.
Eric and I also wrote a paper on our implementation detailing the data structures and design decisions we made to have it running on the Wii. It can be accessed here.
- OpenGL (for PC and Linux)
- libocg (for Wii)