Hierarchical TIN’s ...... Switch between detail levels run-time adjusting to the chosen error measure and tolerance. Level N−1 ...... Generate discrete levels of detail using separate triangulations for each level. Level 1 Level 0 1/24 Basic Principles Use refinement or decimation to produce for detail levels. triangulations that ! During run-time we select the triangulation satisfies Each level has a maximum object-space error, which is decreasing so that . 2/24 Nested point sets and Our input data is a set of points and the triangulations To minimize storage have vertices requirements we want So each level in the triangulation stores only the vertices 3/24 Nested triangulations We would like to do the same for the triangulations also so that we can store each level as However, for a Delaunay triangulation this is generally not possible, since each inserted vertex in will modify the . influence area creating triangles that didn’t exist in 4/24 Domain Decomposition So far we are not able to do view-dependent LOD, because the entire mesh on a given level has the same resolution! We need to assign lower resolution to areas far from the camera. One solution is to split the mesh into smaller parts with different detail levels. We can split the domain into smaller parts in several ways, but some kind of rectangular tiling is probably most convenient. 5/24 Regular Grid Tiling The simplest domain decomposition is a regular grid tiling. 0 1 2 3 e Problem: converges towards a regular grid when far away! 6/24 Quadtree Tiling Quadtree domain decomposition can cover larger areas far away, since tile size varies with detail level. Low detail Earth Medium detail High detail The terrain tile quadtree (a) A typical set of extracted tiles (b) Problem: Difficult to have nested point sets over large areas! 7/24 The cracking problem Regardless of which domain decomposition method we use, we will run into the cracking problem. Two tiles of different detail level will not necessarily have the same border points. This leads to undesirable cracks in the terrain Level l+1 Level l 8/24 Transition Skirts Split each tile into 5 regions: 4 borders and a center area. The border regions are called transition skirts and can be changed during run-time. Transition skirts are paired so that for each skirt there is a corresponding skirt in the neighbor tile. SN Each level has its own transition skirts. The triangulation edges separating the regions are constrained (CDT). Center SE SW SS 9/24 Transition Skirts (2) In this figure we see transition skirt pairs for two different levels of two neighbor tiles. inner border stays constant because of constraints. For each skirt we exchange the outer border with the border of the neighbor skirt on enough levels to make all the necessary transitions. Each skirt is retriangulated for all transitions, but the 10/24 Skirt Configurations N−1 N−1 M 0 0 11/24 Summary Very efficient run-time, since most of the work can be done in a pre-process. Can insert completely scattered data and features such as roads and river networks. Discrete level of detail (vs Continuous LOD) - Less detail control. Messy implementation! 12/24 Progressive Meshes Developed by Hugues Hoppe, Microsoft Research. Part of the DirectX 8 framework. Selective, local refinement hierarchy of TIN’s. 13/24 Vertex Split/Edge Collapse The basic operation in a progressive mesh framework is the Vertex Split operation and its inverse, the Edge Collapse. vsplit tn1 vl tn2 tn1 vs tn3 tn0 vl vr tn2 tl vu vt tn0 vr tr tn3 ecol Each vertex split, vsplit replaces the parent vertex, with two children, and . Two new triangles, and are created between the two and . pairs of neighboring triangles 14/24 PM Representation ecol ecol ecol We can simplify an arbitrary mesh, through a sequence of edge collapses which yields a much simpler base . mesh, ! vsplit forms a PM The tuple vsplit representation of . vsplit vsplit vsplit Because each ecol has an inverse, vsplit the transformation process can be reversed: 15/24 Vertex Hierarchy The sequence of vertex splits can be organized in a vertex hierarchy as shown in this figure M0 v1 v 10 ^ M v 14 v 15 v2 v 11 v4 v3 v5 v6 v8 v9 v7 v 12 v 13 Root nodes correspond to the vertices of the base . mesh, Leaf nodes correspond to the fully expanded mesh, . 16/24 Selective refinment The vertex hierarchy permits selectively refined meshes, i.e meshes not necessarily in the original . sequence A selectively refined mesh corresponds to a “Vertex and in figure). Front” through the hierarchy ( The selectively refined mesh, AKA the Active Mesh, . usually much simpler than the fully refined mesh 17/24 Illegal operations Not all vertex split/edge collapse operations are legal. This figure shows some illegal edge collapse situations vu vt vu vu vt vt 18/24 Preconditions adjacent to both and , the must be an active triangle. 2. For all vertices, triangle are active vertices. and is legal if 1. An ecol 3. The edge collapse does not change the topological type of the mesh. 2. The faces is an active vertex 1. Assume we have a vertex hierarchy of legal edge is legal if collapses. A vsplit are all active faces. 19/24 Progressive Mesh construction 1. Start with the complete mesh, The construction of the PM is a preprocess which does the following: . 2. Repeatedly do legal edge collapses in a sorted manner so that the least significant data are collapsed first. Store the object error, for each edge collapse. 3. Stop when the base mesh, is reached. 20/24 Progressive Mesh rendering 2. For each vertex record, check if case, vsplit. If not, ecol. initially). 1. Start with the previous rendered mesh ( . If this is the 3. For each vsplit and ecol we check recursively the parent or children if further splitting or collapsing is required. 4. When the entire mesh has been checked we can render the triangles. 21/24 Continuous LOD: Geomorphs To avoid “popping” in the mesh when changing LOD, we may use geomorphs. called a such looks like . We construct a temporary mesh, Geomorph with a blend parameter looks like and that We have two meshes and of different LOD, and we want to change from one to the other. We can now do a smooth interpolation between these two meshes, either by interpolating over time or by interpolating over error, i.e 22/24 Geomorphs in a PM setting For a PM, a geomorph is constructed by gradually moving and either towards or away from , depending on if it is a vsplit or ecol operation. vu α=0 α=1 vs α=0 vt 23/24 Summary VDPM uses 50-75% of the number of active triangles required by bintree schemes for the same screen-space error. Local LOD control. Progressive transmission (“Streaming”) of geometry. Possible to insert feature lines. Complex implementation. Memory-hungry 24/24