Martin Isenburg University of North Carolina at Chapel Hill Triangle Fixer: Edge-based Connectivity Compression
Introduction A new edge-based encoding scheme for polygon mesh connectivity.
Introduction A new edge-based encoding scheme for polygon mesh connectivity. compact mesh representations
Introduction A new edge-based encoding scheme for polygon mesh connectivity. compact mesh representations simple implementation
Introduction A new edge-based encoding scheme for polygon mesh connectivity. compact mesh representations simple implementation fast decoding
Introduction A new edge-based encoding scheme for polygon mesh connectivity. compact mesh representations simple implementation fast decoding
Introduction A new edge-based encoding scheme for polygon mesh connectivity. compact mesh representations simple implementation fast decoding extends to non-triangular meshes
Introduction A new edge-based encoding scheme for polygon mesh connectivity. compact mesh representations simple implementation fast decoding extends to non-triangular meshes extends to meshes with group or triangle strip information
What are ‘Polygon Meshes’... ?
A Simple Mesh
Mesh with Holes
Mesh with Handle
Mesh with Handle and Holes
How are Polygon Meshes stored... ?
The minimal information we need to store is: Where are the vertices located ? mesh geometry How are the vertices connected ? mesh connectivity Geometry and Connectivity
list of vertices x 0 y 0 z 0 x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 4x 4 y 4 z x n y n z n Standard Representation
list of vertices list of faces x 0 y 0 z x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 4x 4 y 4 z x n y n z n Standard Representation
list of vertices list of faces x 0 y 0 z x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 4x 4 y 4 z x n y n z n Standard Representation
list of vertices list of faces x 0 y 0 z x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 4x 4 y 4 z x n y n z n Standard Representation
list of vertices list of faces x 0 y 0 z x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 4x 4 y 4 z x n y n z n Standard Representation
list of vertices list of faces x 0 y 0 z x 1 y 1 z x 2 y 2 z 2 u 2 v 2 w x 3 y 3 z 3 u 3 v 3 w x 4 y 4 z 4 u 4 v 4 w x n y n z n..... Standard Representation
list of vertices list of faces x 0 y 0 z x 1 y 1 z x 2 y 2 z 2 u 2 v 2 w x 3 y 3 z 3 u 3 v 3 w x 4 y 4 z 4 u 4 v 4 w x n y n z n..... Compressing Geometry
list of vertices list of faces x 0 y 0 z x 1 y 1 z x 2 y 2 z 2 u 2 v 2 w x 3 y 3 z 3 u 3 v 3 w x 4 y 4 z 4 u 4 v 4 w x n y n z n..... Compressing Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity
Uncompressed Connectivity 6 log(n) bpv
Maximum Connectivity Compression for Triangle Meshes
Turan’s observation The fact that a planar graph can be decomposed into two spanning trees implies that it can be encoded in a constant number of bits.
The two spanning trees are: –a vertex spanning tree –its dual triangle spanning tree Turan’s observation
The fact that a planar graph can be decomposed into two spanning trees implies that it can be encoded in a constant number of bits. The two spanning trees are: –a vertex spanning tree –its dual triangle spanning tree He gave an encoding that uses 12 bits per vertex (bpv). Turan’s observation
Vertex Spanning Tree
Triangle Spanning Tree
Vertex Spanning Tree
Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] Previous work
Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] Short Encodings of Planar Graphs and Maps 4.6 bpv (4.6) Previous work
Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] Topological Surgery 2.4 ~ 7.0 bpv (--) Previous work
Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] Triangle Mesh Compression 0.2 ~ 2.9 bpv (--) Previous work
Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] Edgebreaker 3.2 ~ 4.0 bpv (4.0) Previous work
Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] A Simple and Efficient Encoding for Triangle Meshes 4.2 ~ 5.4 bpv (6.0) Previous work
Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] Mesh Collapse Compression 1.1 ~ 3.4 bpv (--) Previous work
Triangle Fixer: Edge-based Connectivity Compression
edge-based traverses mesh and grows a boundary labels edges with T, R, L, S, or E for each triangle there is a T label the remaining labels R, L, S, and E encode a vertex spanning tree linear-time decompression processes labels in reverse order Short description
Encoding scheme An initial active boundary is defined in cw order around an arbitrary edge of the mesh.
One of the two initial boundary edges is defined to be the active gate. Encoding scheme
At every step of the encoding process the active gate is labeled with T, R, L, S, or E. Encoding scheme
At every step of the encoding process the active gate is labeled with T, R, L, S, or E. Then the boundary and the gate are updated. Encoding scheme
At every step of the encoding process the active gate is labeled with T, R, L, S, or E. Then the boundary and the gate are updated. The boundary is expanded (T), is shrunk (R and L), is split (S), or is terminated (E). Encoding scheme
At every step of the encoding process the active gate is labeled with T, R, L, S, or E. Then the boundary and the gate are updated. The boundary is expanded (T), is shrunk (R and L), is split (S), or is terminated (E). Which label the gate is assigned depends on its adjacency relation with the boundary. Encoding scheme
For each label T, R, L, S, and E we will now explain: (1)for which active gate boundary adjacency relation it applies (2)how the boundary is updated (3)how the active gate is updated Encoding scheme
Label T before The active gate is not adjacent to any other boundary edge.
Label T beforeafter The new active gate is the right edge of the included triangle.
Label R before The active gate is adjacent to the next edge along the active boundary.
Label R beforeafter The new active gate is the previous edge along the active boundary.
Label L before The active gate is adjacent to the previous edge along the active boundary.
Label L beforeafter The new active gate is the next edge along the active boundary.
Label S before The active gate is adjacent to some other edge of the active boundary.
Label S beforeafter The new active gate is the previous and the next edge along the active boundary.
Label E before The active gate is adjacent to the previous and the next edge along the active boundary.
Label E beforeafter The new active gate is popped from the stack. If the stack is empty we terminate.
Example Run - Encoding
T
T
T
R
T
T
R
T
T
R
T
R
T
R
T
R
T
S
T
R
E
T
R
E
Example Run - Decoding
E
R
T
E
R
T
S
T
R
T
R
T
R
T
R
T
T
R
T
T
R
T
T
T
Holes and Handles
Encoding a hole use a new label H associate an integer called size with the label that specifies the number of edges/vertices around the hole there is one label H size per hole the total number of labels does not change, it is still equal to the number of edges in the mesh
Label H size before hole The active gate is adjacent to a hole of size edges/vertices.
Label H size beforeafter hole The new active gate is the rightmost edge of the included hole.
Encoding a handle use a new label M associate three integers called index, offset 1, and offset 2 with the label that specify the current configuration there is one label M idx,off 1,off 2 per handle the total number of labels does not change, it is still equal to the number of edges in the mesh
Label M idx,off 1,off 2 before offset 1 offset 2 index in stack The active gate is adjacent to some edge of a boundary in the stack.
Label M idx,off 1,off 2 beforeafter offset 1 The new active gate is the one previous to the adjacent edge from the stack boundary. offset 2 index in stack
Compressing the label sequence
label encoding The number of labels T, R, L, S, and E equals the number of edges in the mesh. A simple mesh with v vertices has 3v - 6 edges and 2v - 4 triangles. This means that 2v - 4 labels are of type T and the remaining v - 2 labels are of type R, L, S, and E. A label encoding guarantees to use exactly 5v - 10 bits.
label bits code T 1 0 R3100 L3101 S3110 E3111 guarantees 5 bits per vertex label encoding
label bits code T 1 0 R210 L3110 S41110 E41111 guarantees 6 bits per vertex label encoding
previous label current encoding T R L S E guarantees 6 bits per vertex fixed bit encoding
approaches the entropy of the label sequence adaptive version three label memory due to small number of different symbols, probability tables require less than 8KB implemented with fast bit operations arithmetic encoding
Example results vertices fixedmesh phone bunny skull eight femur cow aac shape fandisk holes handles
Sneak Preview
Triceratops 2832 vertices
2834 polygons Triceratops
2832 vertices 2834 polygons –346 triangles Triceratops
2832 vertices 2834 polygons –346 triangles –2266 quadrilaterals Triceratops
2832 vertices 2834 polygons –346 triangles –2266 quadrilaterals –140 pentagons Triceratops
2832 vertices 2834 polygons –346 triangles –2266 quadrilaterals –140 pentagons –63 hexagons Triceratops
2832 vertices 2834 polygons –346 triangles –2266 quadrilaterals –140 pentagons –63 hexagons –10 heptagons Triceratops
2832 vertices 2834 polygons –346 triangles –2266 quadrilaterals –140 pentagons –63 hexagons –10 heptagons –7 octagons Triceratops
2832 vertices 2834 polygons –346 triangles –2266 quadrilaterals –140 pentagons –63 hexagons –10 heptagons –7 octagons –2 undecagons Triceratops
2832 vertices 2834 polygons Triceratops
2832 vertices 2834 polygons -> corners Triceratops
2832 vertices 2834 polygons -> corners 2832 vertices 5660 triangles Triceratops
2832 vertices 2834 polygons -> corners 2832 vertices 5660 triangles -> corners Triceratops
2832 vertices 2834 polygons -> corners 2832 vertices 5660 triangles -> corners Triceratops
2832 vertices 2834 polygons Triceratops
2832 vertices 2834 polygons -> 2834 faces Triceratops
2832 vertices 2834 polygons -> 2834 faces 2832 vertices 5660 triangles Triceratops
2832 vertices 2834 polygons -> 2834 faces 2832 vertices 5660 triangles -> 5660 faces Triceratops
2832 vertices 2834 polygons -> 2834 faces 2832 vertices 5660 triangles -> 5660 faces Triceratops
Beethoven
Galleon
Sandal
Shark
Cessna
Tommy-gun
Short Example Run
F4F4
F3F3
R
F5F5
R
F4F4
Example results vertices bpvmesh triceratops galleon cessna beethoven sandal shark 4171 tommygun
Face Fixer: Compressing Polygon Meshes with Properties SIGGRAPH ’2000
Current Work Patch Fixer –Find frequent patches in mesh and use their repeating structure for encoding. Tetra Fixer –Compressing Tetrahedral Meshes Volume Fixer –Compressing Volume Data composed of Tetrahedrons and Octahedrons with support for cell group structures.
Acknowledgements Paola Magillo for providing her set of example meshes Michael Maniscalco and Frederick Wheeler for technical insights on arithmetic coding Jarek Rossignac and Davis King for fruitful discussions my supervisor Jack Snoeyink for reviewing the paper