420 likes | 632 Views
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
E N D
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
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:
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)
Terrain LOD Example • Screenshot of the Grand Canyon with debug view using the Digital Dawn Toolkit, now incorporated into Crystal Space
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)
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
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
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
LOD Hierarchy Structures QuadTree Hierarchy BinTree Hierarchy
Quadtrees • Each quad is actually two triangles • Produces cracks and T-junctions • Easy to implement • Good for out-of-core operation
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
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 ...
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
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
Streaming over the Web • TerraVision (SRI) – Leclerc 94, Reddy 99
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?
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
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
Lindstrom et al. 1996 Hunter-Liggett US Army base 2-m res 8 x 8km 32 M polys
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
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
Duchaineau et al. 1997 ROAM Split and Merge “Diamonds”
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
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
Röttger et al. 1998 Hawai’i
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
Hoppe 1998 Grand Canyon, Arizona 4,097 x 2,049 8 x 4 blocks of 513 x 513
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
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)
Lindstrom & Pascucci 2001 Puget Sound, Washington 16,385 x 16,385 512 MB
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/
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/
End of Presentation End of Presentation