Title: Terrain Level Of Detail
1Terrain Level Of Detail
2Contents
- 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
3Gameplay Goals for Terrain
From Jonathan Blows SIGGRAPH 2000 Course
- 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
4Background
- 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 RD since the 1970s
- Other terms include
- generalization (GIS)
5Terrain LOD Example
- Screenshot of the Grand Canyon with debug view
using the Digital Dawn Toolkit, now incorporated
into Crystal Space
6Terrain 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)
7Large 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
8Regular 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
9TINs
- 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
10LOD Hierarchy Structures
QuadTree Hierarchy
BinTree Hierarchy
11Quadtrees
- Each quad is actually two triangles
- Produces cracks and T-junctions
- Easy to implement
- Good for out-of-core operation
12Bintrees
- 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
13Cracks and T-Junctions
- Avoid cracks
- Force cracks into T-junctions / remove floating
vertex - Fill cracks with extra triangles
- Avoid T-junctions
- Continue to simplify ...
14Avoiding T-junctions
15Avoiding T-junctions
Pseudo code to do triangle splitting and avoid
T-junctions
- Split(BinTri tri)
- if tri-gtBottomNeighbor is valid
- if tri-gtBottomNeighbor-gtBottomNeighbor ! tri
- Split(tri-gtBottomNeighbor)
-
- Split2(tri)
- Split2(tri-gtBottomNeighbor)
- tri-gtLeftChild-gtRightNeighbor
- tri-gtBottomNeighbor-gtRightChild
- tri-gtRightChild-gtLeftNeighbor
- tri-gtBottomNeighbor-gtLeftChild
- tri-gtBottomNeighbor-gtLeftChild-gtRightNeighbor
- tri-gtRightChild
- tri-gtBottomNeighbor-gtRightChild-gtLeftNeighbor
- tri-gtLeftChild
- else
- Split2(tri)
- tri-gtLeftChild-gtRightNeighbor 0
- tri-gtRightChild-gtLeftNeighbor 0
Split2(tri) tri-gtLeftChild
AllocateBinTri() tri-gtRightChild
AllocateBinTri() tri-gtLeftChild-gtLeftNeighbor
tri-gtRightChild tri-gtRightChild-gtRightNeighbor
tri-gtLeftChild tri-gtLeftChild-gtBottomNeighbor
tri-gtLeftNeighbor if tri-gtLeftNeighbor is
valid if tri-gtLeftNeighbor-gtBottomNeighbor
tri tri-gtLeftNeighbor-gtBottomNeighbor
tri-gtLeftChild else
tri-gtLeftNeighbor-gtRightNeighbor
tri-gtLeftChild tri-gtRightChild-gtBottom
Neighbor tri-gtRightNeighbor if
tri-gtRightNeighbor is valid if
tri-gtRightNeighbor-gtBottomNeighbor tri
tri-gtRightNeighbor-gtBottomNeighbor
tri-gtRightChild else
tri-gtRightNeighbor-gtLeftNeighbor
tri-gtRightChild tri-gtLeftChild-gtLeftCh
ild 0 tri-gtLeftChild-gtRightChild 0
tri-gtRightChild-gtLeftChild 0
tri-gtRightChild-gtRightChild 0
Code by S. McNally on GameDev.net, optimized by
A. Ögren
16Out-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
17Streaming over the Web
- TerraVision (SRI) Leclerc 94, Reddy 99
18TerraVision Movie
19Texture issues
- Need to handle paging of imagery as well as
geometry (satellite imagery resolution is
generally gt than elevation resolution) - Hardware support for paging (clipmaps)
- Detail textures for close-to-ground detail
- Texture compression useful?
20Lindstrom 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
21Lindstrom 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
22Lindstrom et al. 1996
Hunter-Liggett US Army base 2-m res 8 x 8km 32
M polys
23Lindstrom et al. 1996
24Duchaineau 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 frames queue state
- Very popular with source code and implementation
notes available
25Duchaineau et al. 1997
- Split-Only ROAM often used in games
- Used by Seumas McNally in TreadMarks
- Removes the frame coherence portion
- Dont need 2 priority-sorted queues
- Implemenation available as SMTerrain in the
vterrain.org VTP software - Good article on Split-Only ROAM at Gamasutra by
Bryan Turner
26Duchaineau et al. 1997
ROAM Split and Merge Diamonds
27Duchaineau 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 zeT
28Duchaineau et al. 1997
29Röttger et al. 1998
- Extended Lindstroms 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
30Röttger et al. 1998
Hawaii
31Hoppe 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
32Hoppe 1998
Grand Canyon, Arizona 4,097 x 2,049 8 x 4
blocks of 513 x 513
33Hoppe Video
34DeFloriani 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
35DeFloriani et al. 2000
36Lindstrom 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)
37Lindstrom Pascucci 2001
Puget Sound, Washington 16,385 x 16,385 512 MB
38Lindstrom Pascucci Video
39Available 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/
40Terrain 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/
41End of Presentation
End of Presentation