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.
Download
Report
Transcript 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.
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
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 . . . ?
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
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
x0 y0 z0
x1 y1 z1
x2 y2 z2
x3 y3 z3
4 x4 y4 z4
6 4 .....
xn yn zn
list of faces
1 4 20
Standard Representation
list of vertices
x0 y0 z0
x1 y1 z1
x2 y2 z2
x3 y3 z3
4 x4 y4 z4
6 4 .....
xn yn zn
list of faces
1 4 20
Standard Representation
list of vertices
x0 y0 z0
x1 y1 z1
x2 y2 z2
x3 y3 z3
4 x4 y4 z4
6 4 .....
xn yn zn
list of faces
1 4 20
Standard Representation
list of vertices
x0 y0 z0
x1 y1 z1
x2 y2 z2
x3 y3 z3
4 x4 y4 z4
6 4 .....
xn yn zn
list of faces
1 4 20
Standard Representation
list of vertices
list of faces
x0 y0 z0
x1 y1 z1
x2 y2 z2
x3 y3 z3
x4 y4 z4
.....
xn yn zn
1 4 2
2 3 0
4 0 5
3 4 5
5 0 2
.....
.....
.....
4
u2 v 2 w 2
u3 v 3 w 3
u4 v 4 w 4
3 4
3 4
3 6
Compressing Geometry
list of vertices
list of faces
x0 y0 z0
x1 y1 z1
x2 y2 z2
x3 y3 z3
x4 y4 z4
.....
xn yn zn
1 4 2
2 3 0
4 0 5
3 4 5
5 0 2
.....
.....
.....
4
u2 v 2 w 2
u3 v 3 w 3
u4 v 4 w 4
3 4
3 4
3 6
Compressing Connectivity
list of vertices
list of faces
x0 y0 z0
x1 y1 z1
x2 y2 z2
x3 y3 z3
x4 y4 z4
.....
xn yn zn
1 4 2
2 3 0
4 0 5
3 4 5
5 0 2
.....
.....
.....
4
u2 v 2 w 2
u3 v 3 w 3
u4 v 4 w 4
3 4
3 4
3 6
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
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
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
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 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]
• 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
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]
• 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]
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,
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
The active gate is adjacent to some edge of
a boundary in the stack.
before
offset2
index in stack
offset1
Label Midx,off1,off2
The new active gate is the one previous to
the adjacent edge from the stack boundary.
before
after
offset2
index in stack
offset1
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 13333 label encoding guarantees to
use exactly 5v - 10 bits.
13333 label encoding
label
bits
code
T
1
0
R
L
S
E
3
3
3
3
100
101
110
111
guarantees 5 bits per vertex
12344 label encoding
label
bits
code
T
1
0
R
L
S
E
2
3
4
4
10
110
1110
1111
guarantees 6 bits per vertex
fixed bit encoding
previous label
current encoding
T
12434
R
L
S
E
12434
14243
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 8KB
• 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
F4
F3
R
F5
R
F4
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