Progressive Meshes Copyright, 1996 © Dale Carnegie & Associates, Inc.
The Mesh Definition A Mesh is a tuple M=(K,V,D,S) V = {v1,…, vm} the set of vertices defining mesh shape in R3 K Rm is the parametric domain, defining the mesh as the image øv(K) : Rm R3 D = {df : df is the discrete attribute of face f } S = {sf : sf is the scalar attribute of face corner (v,f) }
Edge Collapse/Vertex Split An initial Mesh M’ = Mn is simplified to a coarser mesh M0 Vertex split and edge collapse are invertible
Progressive Mesh A vsplit(s,l,r,t,A) adds near vertex vs a new vertex vt and two new faces {vs,vl,vr} and {vs,vl,vr}. The attribute information is carried by A. Any arbitary mesh M’ can be represented as a simple mesh M0 with a sequence of n vsplit records. (M0,{vsplit0,…,vsplitn-1}) is a progressive mesh
Geomorphs An intermediate mesh MG() = (Ki+1, VG()) is determined with 0 1, such that MG(0) looks like Mi and MG(1) looks like Mi+1. MG() has connectivity of of Mi+1 with vertex position being linearly interpolated.
Progressive Transmission The compact mesh M0 is transmitted first followed by a stream of vspliti records. The receiver incrementally rebuilds M’ and animates the changing mesh using geomorphs. The original mesh M’ is exactly recovered atfer n records : PM is a lossless representation.
Selective Refinement An initial mesh Mc is selectively refined by iterating through {vsplit0,…,vsplitn-1}, but selectively performing vsplit if : all 3 vertices are present in the mesh REFINE(vsi) is TRUE. Selective refinement also allows a particular Level of Detail (LOD) of a mesh
Mesh Compression A compact representation of the vsplit(si,li,ri) records enables to store the mesh in a compressed notation. si is stored directly Remaining 2 adjacent vertices can be stored in app 5 bits Scalar and discrete attributes of Mi+1 can be predicted from Mi. Hence a delta encoding can reduce storage.