Date post: | 20-Dec-2015 |
Category: |
Documents |
View: | 219 times |
Download: | 0 times |
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.
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
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 x0 y0 z0
x1 y1 z1
x2 y2 z2
x3 y3 z3
4 x4 y4 z4
6 4 . . . . .xn yn zn
Standard Representation
list of vertices list of faces x0 y0 z0 1 4 20
x1 y1 z1
x2 y2 z2
x3 y3 z3
4 x4 y4 z4
6 4 . . . . .xn yn zn
Standard Representation
list of vertices list of faces x0 y0 z0 1 4 20
x1 y1 z1
x2 y2 z2
x3 y3 z3
4 x4 y4 z4
6 4 . . . . .xn yn zn
Standard Representation
list of vertices list of faces x0 y0 z0 1 4 20
x1 y1 z1
x2 y2 z2
x3 y3 z3
4 x4 y4 z4
6 4 . . . . .xn yn zn
Standard Representation
list of vertices list of faces x0 y0 z0 1 4 20
x1 y1 z1
x2 y2 z2
x3 y3 z3
4 x4 y4 z4
6 4 . . . . .xn yn zn
Standard Representation
list of vertices list of faces x0 y0 z0 1 4 2
x1 y1 z1 2 3 0 3 4
x2 y2 z2 u2 v2 w2 4 0 5 3 4
x3 y3 z3 u3 v3 w3 3 4 5 3 6
4 x4 y4 z4 u4 v4 w4 5 0 2
. . . . .xn yn zn
. . . . .
. . . . .
. . . . .
Standard Representation
list of vertices list of faces x0 y0 z0 1 4 2
x1 y1 z1 2 3 0 3 4
x2 y2 z2 u2 v2 w2 4 0 5 3 4
x3 y3 z3 u3 v3 w3 3 4 5 3 6
4 x4 y4 z4 u4 v4 w4 5 0 2
. . . . .xn yn zn
. . . . .
. . . . .
. . . . .
Compressing Geometry
list of vertices list of faces x0 y0 z0 1 4 2
x1 y1 z1 2 3 0 3 4
x2 y2 z2 u2 v2 w2 4 0 5 3 4
x3 y3 z3 u3 v3 w3 3 4 5 3 6
4 x4 y4 z4 u4 v4 w4 5 0 2
. . . . .xn yn zn
. . . . .
. . . . .
. . . . .
Compressing Connectivity
0
1
10
2
3
45
6
7
8
9
1112
0 4 5 0 5
1 5 6 1 1
6 2 2 6 3
4 8 5 8 9
5 5 9 6
Uncompressed Connectivity
0
1
10
2
3
45
6
7
8
9
1112
0 4 5 0 5
1 5 6 1 1
6 2 2 6 3
4 8 5 8 9
5 5 9 6 9
11 6
Uncompressed Connectivity
0
1
10
2
3
45
6
7
8
9
1112
0 4 5 0 5
1 5 6 1 1
6 2 2 6 3
4 8 5 8 9
5 5 9 6 9
11 6 6 11 7
Uncompressed Connectivity
0
1
10
2
3
45
6
7
8
9
1112
0 4 5 0 5
1 5 6 1 1
6 2 2 6 3
4 8 5 8 9
5 5 9 6 9
11 6 6 11 7
6 7 3
Uncompressed Connectivity
0
1
10
2
3
45
6
7
8
9
1112
0 4 5 0 5
1 5 6 1 1
6 2 2 6 3
4 8 5 8 9
5 5 9 6 9
11 6 6 11 7
6 7 3 8 10
9
Uncompressed Connectivity
0
1
10
2
3
45
6
7
8
9
1112
0 4 5 0 5
1 5 6 1 1
6 2 2 6 3
4 8 5 8 9
5 5 9 6 9
11 6 6 11 7
6 7 3 8 10
9 9 10 11
Uncompressed Connectivity
0
1
10
2
3
45
6
7
8
9
1112
0 4 5 0 5
1 5 6 1 1
6 2 2 6 3
4 8 5 8 9
5 5 9 6 9
11 6 6 11 7
6 7 3 8 10
9 9 10 11 11
12 7
Uncompressed Connectivity
0
1
10
2
3
45
6
7
8
9
1112
0 4 5 0 5
1 5 6 1 1
6 2 2 6 3
4 8 5 8 9
5 5 9 6 9
11 6 6 11 7
6 7 3 8 10
9 9 10 11 11
12 7
Uncompressed Connectivity
0
1
10
2
3
45
6
7
8
9
1112
0 4 5 0 5
1 5 6 1 1
6 2 2 6 3
4 8 5 8 9
5 5 9 6 9
11 6 6 11 7
6 7 3 8 10
9 9 10 11 11
12 7
Uncompressed Connectivity
0
1
10
2
3
45
6
7
8
9
1112
0 4 5 0 5
1 5 6 1 1
6 2 2 6 3
4 8 5 8 9
5 5 9 6 9
11 6 6 11 7
6 7 3 8 10
9 9 10 11 11
12 7
Uncompressed Connectivity
0
1
10
2
3
45
6
7
8
9
1112
0 4 5 0 5
1 5 6 1 1
6 2 2 6 3
4 8 5 8 9
5 5 9 6 9
11 6 6 11 7
6 7 3 8 10
9 9 10 11 11
12 7
Uncompressed Connectivity
0
1
10
2
3
45
6
7
8
9
1112
0 4 5 0 5
1 5 6 1 1
6 2 2 6 3
4 8 5 8 9
5 5 9 6 9
11 6 6 11 7
6 7 3 8 10
9 9 10 11 11
12 7
Uncompressed Connectivity
6 log(n) bpv
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 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
• 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 EfficientEncoding for Triangle
Meshes4.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
• 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.
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 S
before after
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
before after
The new active gate is popped from the stack. If the stack is empty we terminate.
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
Encoding a handle
• use a new label M• associate three integers called index,
offset1, and offset2 with the label that
specify the current configuration
• there is one label Midx,off1,off2 per handle
• the total number of labels does not change, it is still equal to the number of edges in the mesh
Label Midx,off1,off2
before
offset1
offset2
index in stack
The active gate is adjacent to some edge of a boundary in the stack.
Label Midx,off1,off2
before after
offset1
The new active gate is the one previous to the adjacent edge from the stack boundary.
offset2
index in stack
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 13333 label encoding guarantees to use exactly 5v - 10 bits.
label bits code
T 1 0R 2 10L 3 110S 4 1110E 4 1111
guarantees 6 bits per vertex
12344 label encoding
previous label current encoding
T 1 2 4 3 4R 1 2 4 3 4L 1 4 2 4 3S 1 4 2 4 3E 1 2 4 4 3
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
33204 4.05phone
34834 4.00bunny
10952 4.22skull
766 4.09eight
3897 4.16femur
3078 3.99cow
aac-3
2.70
1.73
2.96
1.43
3.05
2.36
2562 4.00shape
6475 4.01fandisk
0.77
1.67
holes
3
5
--
--
--
22
--
--
handles
--
--
51
2
2
--
--
--
• 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
-> 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
-> 2834 faces
• 2832 vertices• 5660 triangles
-> 5660 faces
Triceratops
• 2832 vertices• 2834 polygons
-> 2834 faces
• 2832 vertices• 5660 triangles
-> 5660 faces
Triceratops
Example results
vertices bpvmesh
2832 2.36triceratops
2372 2.60galleon
3745 2.84cessna
2655 2.89beethoven
2636 2.60sandal
2560 1.67shark
4171tommygun 2.61
346
336
900
680
961
188
992
2266
1947
2797
2078
1985
2253
2785
140
40
180
44
7
83
84
82
62
50
10
0
38
119
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.