1 / 41

Terrain Level Of Detail

Terrain Level Of Detail. Contents. Background History, applications, data sizes Important Concepts regular grids v TINs, quadtrees v bintrees, out-of-core paging, web streaming Implementations Lindstrom 96, Duchaineau 97, R ö ttger 98, Hoppe 98, DeFloriani 00, Lindstrom 01

nova
Download Presentation

Terrain Level Of Detail

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Terrain Level Of Detail

  2. Contents • Background • History, applications, data sizes • Important Concepts • regular grids v TINs, quadtrees v bintrees, out-of-core paging, web streaming • Implementations • Lindstrom 96, Duchaineau 97, Röttger 98, Hoppe 98, DeFloriani 00, Lindstrom 01 • Available software

  3. Gameplay Goals for Terrain • Large enough to travel around for hours • Detailed when seen at human scale • Dynamic modification of terrain data • Runs at high, stable frame rates • Need fast rotation of viewpoint From Jonathan Blow’s SIGGRAPH 2000 Course:

  4. Background • One of the first real uses of LOD • Important for applications such as • Flight simulators • Terrain-based computer games • Geographic Information Systems (GIS) • Virtual tourism, real-estate, mission planning • Sustained R&D since the 1970s • Other terms include • generalization (GIS)

  5. Terrain LOD Example • Screenshot of the Grand Canyon with debug view using the Digital Dawn Toolkit, now incorporated into Crystal Space

  6. Terrain LOD vs Generic LOD • Terrain is easier... • Geometry is more constrained • Normally uniform grids of height values • More specialized and simpler algorithms • Terrain is more difficult... • Continuous and very large models • Simultaneously very close and far away • Necessitates view-dependent LOD • Often requires paging from disk (out-of-core)

  7. Large Terrain Databases • USGS GTOPO30 • 30 arc-second (~1 km) resolution elevation • 43,200 x 21,600 = 1.8 billion triangles • NASA EOS satellite ASTER • 30-m resolution elevation data • from 15-m near infrared stereo imagery • USGS National Elevation Dataset (NED) • 50,000 quads at around 50 GB

  8. Regular Grids • Uniform array of height values • Simple to store and manipulate • Encode in raster formats (DEM, GeoTIFF) • Easy to interpolate to find elevations • Less disk/memory (only store z value) • Easy view culling and collision detection • Used by most implementers

  9. TINs • Triangulated Irregular Networks • Fewer polygons needed to attain required accuracy • Higher sampling in bumpy regions and coarser in flat ones • Can model maxima, minima, ridges, valleys, overhangs, caves • Used by Hoppe 98 & DeFloriani 00

  10. LOD Hierarchy Structures QuadTree Hierarchy BinTree Hierarchy

  11. Quadtrees • Each quad is actually two triangles • Produces cracks and T-junctions • Easy to implement • Good for out-of-core operation

  12. Bintrees • Terminology • binary triangle tree (bintree, bintritree, BTT) • right triangular irregular networks (RTIN) • longest edge bisection • Easier to avoid cracks and T-junctions • Neighbor is never more than 1 level away • Used by Lindstrom 96 & Duchaineau 97

  13. Cracks and T-Junctions • Avoid cracks: • Force cracks into T-junctions / remove floating vertex • Fill cracks with extra triangles • Avoid T-junctions: • Continue to simplify ...

  14. Avoiding T-junctions

  15. Avoiding T-junctions Pseudo code to do triangle splitting and avoid T-junctions Split(BinTri *tri) { if tri->BottomNeighbor is valid { if tri->BottomNeighbor->BottomNeighbor != tri { Split(tri->BottomNeighbor) } Split2(tri) Split2(tri->BottomNeighbor) tri->LeftChild->RightNeighbor = tri->BottomNeighbor->RightChild tri->RightChild->LeftNeighbor = tri->BottomNeighbor->LeftChild tri->BottomNeighbor->LeftChild->RightNeighbor = tri->RightChild tri->BottomNeighbor->RightChild->LeftNeighbor = tri->LeftChild } else { Split2(tri) tri->LeftChild->RightNeighbor = 0; tri->RightChild->LeftNeighbor = 0; } } Split2(tri) { tri->LeftChild = AllocateBinTri(); tri->RightChild = AllocateBinTri(); tri->LeftChild->LeftNeighbor = tri->RightChild tri->RightChild->RightNeighbor = tri->LeftChild tri->LeftChild->BottomNeighbor = tri->LeftNeighbor if tri->LeftNeighbor is valid { if tri->LeftNeighbor->BottomNeighbor == tri { tri->LeftNeighbor->BottomNeighbor = tri->LeftChild } else { tri->LeftNeighbor->RightNeighbor = tri->LeftChild } } tri->RightChild->BottomNeighbor = tri->RightNeighbor if tri->RightNeighbor is valid { if tri->RightNeighbor->BottomNeighbor == tri { tri->RightNeighbor->BottomNeighbor = tri->RightChild } else { tri->RightNeighbor->LeftNeighbor = tri->RightChild } } tri->LeftChild->LeftChild = 0 tri->LeftChild->RightChild = 0 tri->RightChild->LeftChild = 0 tri->RightChild->RightChild = 0 } Code by S. McNally on GameDev.net, optimized by A. Ögren

  16. Out-of-core operation • Virtual memory solutions • mmap() used by Lindstrom 01 • VirtualAlloc() / VirtualFree() used by Hoppe 98 • Explicit paging from disk • NPSNET (NPS): Falby 93 • VGIS (GVU): Davis 99 • OpenGL Performer Active Surface Def (ASD) • SGI InfiniteReality (IR) Clipmapping

  17. Streaming over the Web • TerraVision (SRI) – Leclerc 94, Reddy 99

  18. TerraVision Movie

  19. Texture issues • Need to handle paging of imagery as well as geometry (satellite imagery resolution is generally > than elevation resolution) • Hardware support for paging (clipmaps) • Detail textures for close-to-ground detail • Texture compression useful?

  20. Lindstrom et al. 1996 • One of first real-time view-dependent algorithms, referred to as continuous LOD (CLOD) • Regular grid, bintree, quadtree blocks • Mesh broken into rectangular blocks with a top-down coarse-grained simplification • Then per-vertex simplification performed within each block • Frame-to-frame coherence: • Maintain an active cut of blocks • Only visit vertices if could change in frame

  21. Lindstrom et al. 1996 • Vertex removal scheme • Merge based upon a measure of screen-space error between the two surfaces, d • Used a nonlinear mapping of d to represent 0..65535 in only 8 bits

  22. Lindstrom et al. 1996 Hunter-Liggett US Army base 2-m res 8 x 8km 32 M polys

  23. Lindstrom et al. 1996

  24. Duchaineau et al. 1997 • Real-time Optimally Adapting Meshes (ROAM) • Regular grid, bintree, 2 priority queues: • 1 priority-ordered list of triangle splits • 1 priority-ordered list of triangle merges • Frame coherence • pick up from previous frame’s queue state • Very popular with source code and implementation notes available

  25. Duchaineau et al. 1997 • “Split-Only” ROAM often used in games • Used by Seumas McNally in TreadMarks • Removes the frame coherence portion • Don’t need 2 priority-sorted queues • Implementation available as SMTerrain in the vterrain.org VTP software • Good article on Split-Only ROAM at Gamasutra by Bryan Turner

  26. Duchaineau et al. 1997 ROAM Split and Merge “Diamonds”

  27. Duchaineau et al. 1997 • Principal metric was screen-based geometric error with guaranteed bound on the error • Hierarchy of volumes called wedgies • Covers the (x,y) extent of a triangle and extends over the height range z-eT through z+eT

  28. Duchaineau et al. 1997

  29. Röttger et al. 1998 • Extended Lindstrom’s CLOD work • Regular grid, quadtree, top-down • World space metric considered: • viewer distance & terrain roughness • Integrated vertex geomorphing • Deal with tears by skipping center vertex of higher resolution adjacent edge

  30. Röttger et al. 1998 Hawai’i

  31. Hoppe 1998 • View-Dependent Progressive Meshes (VDPM) from Hoppe 97 applied to terrain • TIN-based, out-of-core (VirtualAlloc/Free) • Integrated vertex geomorphing • Tears between blocks avoided by not simplifying at block boundaries • Notes that larger errors can occur between grid points and precomputes maximum height deviations

  32. Hoppe 1998 Grand Canyon, Arizona 4,097 x 2,049 8 x 4 blocks of 513 x 513

  33. Hoppe Video

  34. DeFloriani et al. 2000 • VARIANT. Uses Multi-Triangulation (MT) • General TIN approach applied to terrain • Plug in different simp. & error routines • Supports analyses: visibility, elevation along a path, contour extraction, viewshed • Frame coherence (use previous state) • Freely available C++ library for MT

  35. DeFloriani et al. 2000

  36. Lindstrom & Pascucci 2001 • Visualization of Large Terrains Made Easy • Regular gridded, top-down, bintree • Out-of-core with mmap() and spatial org. • Fast hierarchical culling, triangle stripping, and optional multithreading of refinement and rendering tasks • Uses a nesting of error metric terms (bounding spheres)

  37. Lindstrom & Pascucci 2001 Puget Sound, Washington 16,385 x 16,385 512 MB

  38. Lindstrom & Pascucci Video

  39. Available Software • Virtual Terrain Project (VTP) • http://www.vterrain.org/ • TerraVision • http://terravision.sourceforge.net/ • SOAR • http://www.cc.gatech.edu/~lindstro/software/soar/ • ROAM • http://www.cognigraph.com/ROAM_homepage/ • Source code links (ROAM, VTP, MT, etc.) • http://www.LODBook.com/source/

  40. Terrain Data Resources • Large Terrain Databases • http://www.cc.gatech.edu/projects/large_models/ • Terrain Models on LODBook.com • http://www.LODBook.com/terrain/ • GeoVRML Data Resources Page • http://www.geovrml.org/data/

  41. End of Presentation End of Presentation

More Related