Triangle Fixer Edgebased Connectivity Compression Martin Isenburg University
Triangle Fixer: Edge-based Connectivity Compression Martin Isenburg University of North Carolina at Chapel Hill
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 simplementation
Introduction A new edge-based encoding scheme for polygon mesh connectivity. compact mesh representations simplementation fast decoding
Introduction A new edge-based encoding scheme for polygon mesh connectivity. compact mesh representations simplementation fast decoding
Introduction A new edge-based encoding scheme for polygon mesh connectivity. compact mesh representations simplementation fast decoding extends to non-triangular meshes
Introduction A new edge-based encoding scheme for polygon mesh connectivity. compact mesh representations simplementation 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. . . ?
Geometry and Connectivity The minimal information we need to store is: • Where are the vertices located ? mesh geometry • How are the vertices connected ? mesh connectivity
Standard Representation 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 4 x 4 y 4 z 4 6 4. . . x n y n zn
Standard Representation 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 4 x 4 y 4 z 4 6 4. . . x n y n zn list of faces 1 4 20
Standard Representation 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 4 x 4 y 4 z 4 6 4. . . x n y n zn list of faces 1 4 20
Standard Representation 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 4 x 4 y 4 z 4 6 4. . . x n y n zn list of faces 1 4 20
Standard Representation 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 4 x 4 y 4 z 4 6 4. . . x n y n zn list of faces 1 4 20
Standard Representation list of vertices x 0 y 0 z 0 x 1 y 1 z 1 x 2 y 2 z 2 u 2 v 2 w 2 x 3 y 3 z 3 u 3 v 3 w 3 4 x 4 y 4 z 4 u 4 v 4 w 4. . . x n y n zn list of faces 1 4 2 2 3 0 3 4 4 0 5 3 4 5 3 6 5 0 2. . . .
Compressing Geometry list of vertices x 0 y 0 z 0 x 1 y 1 z 1 x 2 y 2 z 2 u 2 v 2 w 2 x 3 y 3 z 3 u 3 v 3 w 3 4 x 4 y 4 z 4 u 4 v 4 w 4. . . x n y n zn list of faces 1 4 2 2 3 0 3 4 4 0 5 3 4 5 3 6 5 0 2. . . .
Compressing Connectivity list of vertices x 0 y 0 z 0 x 1 y 1 z 1 x 2 y 2 z 2 u 2 v 2 w 2 x 3 y 3 z 3 u 3 v 3 w 3 4 x 4 y 4 z 4 u 4 v 4 w 4. . . x n y n zn list of faces 1 4 2 2 3 0 3 4 4 0 5 3 4 5 3 6 5 0 2. . . .
Uncompressed Connectivity 2 1 3 0 6 5 4 7 9 11 8 10 12
Uncompressed Connectivity 0 2 1 3 0 6 5 4 7 9 11 8 10 12 4 5
Uncompressed Connectivity 0 1 2 1 3 0 6 5 4 7 9 11 8 10 12 4 5 0 5
Uncompressed Connectivity 0 1 2 1 3 0 6 5 4 7 9 11 8 10 12 4 5 5 6 0 1 5
Uncompressed Connectivity 2 1 3 0 6 5 4 7 9 11 8 10 12 0 1 6 4 5 2 5 6 0 1 5 1
Uncompressed Connectivity 2 1 3 0 6 5 4 7 9 11 8 10 12 0 1 6 4 5 2 5 6 2 0 1 6 5 1 3
Uncompressed Connectivity 2 1 3 0 6 5 4 7 9 11 8 10 12 0 1 6 4 4 5 2 8 5 6 2 5 0 1 6 5 1 3
Uncompressed Connectivity 2 1 3 0 6 5 4 7 9 11 8 10 12 0 1 6 4 5 2 8 5 6 2 5 0 1 6 8 5 1 3 9
Uncompressed Connectivity 2 1 3 0 6 5 4 7 9 11 8 10 12 0 1 6 4 5 2 8 5 5 6 2 5 9 0 1 6 8 6 5 1 3 9
Uncompressed Connectivity 2 1 0 6 5 4 9 11 8 10 0 1 3 6 4 5 7 11 12 4 5 2 8 5 6 2 5 9 0 1 6 8 6 5 1 3 9 9
Uncompressed Connectivity 2 1 0 6 5 4 9 11 8 10 0 1 3 6 4 5 7 11 12 4 5 2 8 5 6 5 0 6 1 2 6 5 8 9 6 6 11 5 1 3 9 9 7
Uncompressed Connectivity 2 1 0 6 5 4 9 11 8 10 0 1 3 6 4 5 7 11 6 12 4 5 2 8 5 6 7 5 0 6 1 2 6 5 8 9 6 6 11 3 5 1 3 9 9 7
Uncompressed Connectivity 2 1 0 6 5 4 9 11 8 10 0 1 3 6 4 5 7 11 6 12 9 4 5 2 8 5 6 7 5 0 5 6 1 1 2 6 3 5 8 9 9 6 11 7 3 8 10
Uncompressed Connectivity 2 1 0 6 5 4 9 11 8 10 0 1 3 6 4 5 7 11 6 12 9 4 5 5 6 2 2 8 5 5 9 6 6 7 3 9 10 0 1 6 8 6 11 8 11 5 1 3 9 9 7 10
Uncompressed Connectivity 2 1 0 6 5 4 9 11 8 10 0 1 3 6 4 5 7 11 6 12 9 12 4 5 5 6 2 2 8 5 5 9 6 6 7 3 9 10 7 0 1 6 8 6 11 8 11 5 1 3 9 9 7 10 11
Uncompressed Connectivity 2 1 0 6 5 4 9 11 8 10 0 1 3 6 4 5 7 11 6 12 9 12 4 5 5 6 2 2 8 5 5 9 6 6 7 3 9 10 7 0 1 6 8 6 11 8 11 5 1 3 9 9 7 10 11
Uncompressed Connectivity 2 1 0 6 5 4 9 11 8 10 0 1 3 6 4 5 7 11 6 12 9 12 4 5 5 6 2 2 8 5 5 9 6 6 7 3 9 10 7 0 1 6 8 6 11 8 11 5 1 3 9 9 7 10 11
Uncompressed Connectivity 2 1 0 6 5 4 9 11 8 10 0 1 3 6 4 5 7 11 6 12 9 12 4 5 5 6 2 2 8 5 5 9 6 6 7 3 9 10 7 0 1 6 8 6 11 8 11 5 1 3 9 9 7 10 11
Uncompressed Connectivity 2 1 0 6 5 4 9 11 8 10 0 1 3 6 4 5 7 11 6 12 9 12 4 5 5 6 2 2 8 5 5 9 6 6 7 3 9 10 7 0 1 6 8 6 11 8 11 5 1 3 9 9 7 10 11
Uncompressed Connectivity 6 log(n) bpv 2 1 0 6 5 4 9 11 8 10 0 1 3 6 4 5 7 11 6 12 9 12 4 5 5 6 2 2 8 5 5 9 6 6 7 3 9 10 7 0 1 6 8 6 11 8 11 5 1 3 9 9 7 10 11
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.
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).
Vertex Spanning Tree
Vertex Spanning Tree
Vertex Spanning Tree
Triangle Spanning Tree
Vertex Spanning Tree
Previous work • Keeler Westbrook [95] • Taubin Rossignac [96] • Tauma Gotsman [98] • Rossignac [98] • De. Floriani et al [99] • Isenburg Snoeyink [99]
Previous work • Keeler Westbrook [95] • Taubin Rossignac [96] • Tauma Gotsman [98] • Rossignac [98] • De. Floriani 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] • De. Floriani 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] • De. Floriani 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] • De. Floriani et al [99] • Isenburg Snoeyink [99] Edgebreaker 3. 2 ~ 4. 0 bpv (4. 0)
Previous work A Simple and Efficient • Keeler Westbrook [95] Encoding for Triangle Meshes 4. 2 ~ 5. 4 bpv (6. 0) • Taubin Rossignac [96] • Tauma Gotsman [98] • Rossignac [98] • De. Floriani et al [99] • Isenburg Snoeyink [99]
Previous work • Keeler Westbrook [95] • Taubin Rossignac [96] • Tauma Gotsman [98] • Rossignac [98] • De. Floriani et al [99] • Isenburg Snoeyink [99] Mesh Collapse Compression 1. 1 ~ 3. 4 bpv (--)
Triangle Fixer: Edge-based Connectivity Compression
Short description • • • 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
Encoding scheme An initial active boundary is defined in cw order around an arbitrary edge of the mesh.
Encoding scheme 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
Label T The active gate is not adjacent to any other boundary edge. before
Label T The new active gate is the right edge of the included triangle. before after
Label R The active gate is adjacent to the next edge along the active boundary. before
Label R The new active gate is the previous edge along the active boundary. before after
Label L The active gate is adjacent to the previous edge along the active boundary. before
Label L The new active gate is the next edge along the active boundary. before after
Label S The active gate is adjacent to some other edge of the active boundary. before
Label S The new active gate is the previous and the next edge along the active boundary. before after
Label E The active gate is adjacent to the previous and the next edge along the active boundary. before
Label E The new active gate is popped from the stack. If the stack is empty we terminate. before after
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 Hsize per hole • the total number of labels does not change, it is still equal to the number of edges in the mesh
Label Hsize The active gate is adjacent to a hole of size edges/vertices. before hole
Label Hsize The new active gate is the rightmost edge of the included hole. before hole after
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 Midx, 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 Midx, off 1, off 2 The active gate is adjacent to some edge of a boundary in the stack. before offset 2 index in stack offset 1
Label Midx, off 1, off 2 The new active gate is the one previous to the adjacent edge from the stack boundary. before after offset 2 index in stack offset 1
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 3 v - 6 edges and 2 v - 4 triangles. • This means that 2 v - 4 labels are of type T and the remaining v - 2 labels are of type R, L, S, and E. • A 13333 label encoding guarantees to use exactly 5 v - 10 bits.
13333 label encoding label bits T 1 0 R L S E 3 3 100 101 110 111 code guarantees 5 bits per vertex
12344 label encoding label bits T 1 0 R L S E 2 3 4 4 10 1110 1111 code guarantees 6 bits per vertex
fixed bit encoding previous label current encoding T 12434 R L S E 12434 14243 12443 guarantees 6 bits per vertex
arithmetic 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 8 KB • implemented with fast bit operations
Example results mesh vertices holes handles fixed aac-3 phone 33204 3 -- 4. 05 2. 70 bunny 34834 5 -- 4. 00 1. 73 skull 10952 -- 51 4. 22 2. 96 eight 766 -- 2 4. 09 1. 43 femur 3897 -- 2 4. 16 3. 05 cow 3078 22 -- 3. 99 2. 36 shape 2562 -- -- 4. 00 0. 77 fandisk 6475 -- -- 4. 01 1. 67
Sneak Preview
Triceratops • 2832 vertices
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 -> 11328 corners
Triceratops • 2832 vertices • 2834 polygons -> 11328 corners • 2832 vertices • 5660 triangles
Triceratops • 2832 vertices • 2834 polygons -> 11328 corners • 2832 vertices • 5660 triangles -> 16980 corners
Triceratops • 2832 vertices • 2834 polygons -> 11328 corners • 2832 vertices • 5660 triangles -> 16980 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
Beethoven
Galleon
Sandal
Shark
Cessna
Tommy-gun
Short Example Run
F 4
F 3
R
F 5
R
F 4
Example results mesh vertices bpv triceratops 2832 346 2266 140 82 2. 36 galleon 2372 336 1947 40 62 2. 60 cessna 3745 900 2797 180 50 2. 84 beethoven 2655 680 2078 44 10 2. 89 sandal 2636 961 1985 7 0 2. 60 shark 2560 188 2253 83 38 1. 67 tommygun 4171 992 2785 84 119 2. 61
Face Fixer: Compressing Polygon Meshes with Properties SIGGRAPH ’ 2000 http: //www. cs. unc. edu/~isenburg/papers/is-ff-00. pdf
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
- Slides: 182