Topological Surgery Progressive Forest Split Papers by Gabriel Taubin et al Presented by João Comba
Motivation Geometric Compression for transmission
Mesh Compression Solutions Single: [Topological Surgery] Multi-Res: [Progressive Forest Split]
Polyhedral Compression Compression of position and properties 1. Enclose input points in a bounding box 2. Round vertex positions to b bits 3. Create prediction function: Ex. p i = prediction(v i-1, v i-2 ) 4. Run length encode difference between prediction and correct position [RLE( (p i -v i ) (p i+1 -v i+1 ) (p i+2 -v i+2 ) …] v0v0 v1v1 v2v2 v4v4 v3v3 v5v5 v6v6 p2p2
Polyhedral Compression Connectivity Encoding –Mesh info: V vertices and T triangles –Assumption: Vertex coordinates available for random acess and listed in suitable order –Vertex organized by proximity: Improve compression of position and properties
Topological Surgery –Vertex and Triangle spanning trees
Vertex Spanning Tree (VTREE) –Vertex quantization uses ancestors in the tree in the prediction function –Mesh is cut through cut edges –Branching nodes connected by vertex runs
Triangle Spanning Tree (TTREE) –Dual graph is composed of triangle runs –Branching triangles connects 3 runs –Bounding Loop
Triangle Spanning Tree (TTREE) –Y-vertices: 3 rd vertex of branching triangle –Marching edges connect triangles within a run or bound branching triangles –Marching Pattern: order in which marching edges are visited during decompression
Data Structures VTREE: vertex tree structure – VCOR: compressed vertex positions
Data Structures TTREE: triangle tree structure – MARCH: triangle tree marching pattern –bit stream of left-right moves
Decompression Algorithm [D1] Reconstruct table of vertex positions [D2] Contruct bounding loop [D3] Compute relative index of Y-vertices [D4] Reconstruct and link triangle strips
[D1] Reconstruct table of vertex positions Derive number of vertices –Sum of lengths of runs + 1 Create array of vertex positions that corresponds to pre-order visit of tree Entropy decode vertex corrections Compute vertex positions –v n = (v n ) + P(, v n-1, …, v n-K )
[D2] Contruct bounding loop Constructed during VTREE traversal Represented by a table of 2V-2 references to the vertex table
[D3] Compute relative index of Y-vertices Y-vertices have own lookup table Compute Y-vertices offsets during VTREE traversal
[D4] Reconstruct and link triangle strips
Compression Algorithm [C1] Construct the vertex spanning tree [C2] Encode the vertex tree [C3] Compress vertex positions [C4] Encode the triangle tree
[C1] Construct the vertex spanning tree
[C2] Encode the vertex tree –Choose a leaf as root and perform a pre- order traversal –Order branching nodes consistently with –Ex. –
[C3] Compress vertex positions Predictor equation: –P(, v n-1, …, v n-K ) = i=1..K ( i v n-1 ) Choice of i resulting from least square minimization of corrections
[C4] Encode the triangle tree
Results Source12 bits10 bits8 bits
Results Source12 bits10 bits8 bits
Results: Fandisk
Results
Results
Progressive Forest Split –Transmission in progressive fashion –No popping with geomorph (smooth transition between levels in the LOD) –Forest Split Operation (refinement step)
Cutting through forest edges
Triangulating Tree Boundary Loops
Forest Split Compression [C1] Encoding forest edges [C2] Encoding simple polygons [C3] Encoding of vertex displacements
Compression of PFS format –Clustered multi-resolution models –Forest collapse operation –Permutations of vertex and triangle indices –Edge-collapse simplification algorithms
Results
Results
Results
Results