Title: Mesh Collapse Compression
1http//www.cs.unc.edu/isenburg/trianglestripcompr
ession/
2Triangle Strip Compression
Martin Isenburg
University of North Carolina at Chapel Hill
3Introduction
- A new edge-based encoding schemefor mesh
connectivity. -
4Introduction
- A new edge-based encoding scheme for mesh
connectivity. - ? compact mesh representations
5Introduction
- A new edge-based encoding scheme for mesh
connectivity. - ? compact mesh representations ? simple
implementation
6Introduction
- A new edge-based encoding scheme for mesh
connectivity. - ? compact mesh representations ? simple
implementation ? fast decoding
7Introduction
- A new edge-based encoding scheme for mesh
connectivity. - ? compact mesh representations ? simple
implementation ? fast decoding
8Introduction
- A new edge-based encoding scheme for mesh
connectivity. - ? compact mesh representations ? simple
implementation ? fast decoding - ? include triangle strip information at
little additional costs
9A Triangle Mesh
10A Stripified Triangle Mesh
11Triangle Strips
12Triangle Strips
- Technique for efficient rendering of triangle
meshes. - Reduce data transfer between main memory and
render engine. - Requires built-in buffer for two (previous)
vertices. - Supported in todays graphic boards.
13Rendering with Triangles
14Rendering with Triangles
15Rendering with Triangle Strips
16Rendering with Triangle Strips
17Rendering with Triangle Strips
18Sequential Triangle Strip
v0 v1 v2 v3 v4 v5 v6 v7 v8
7 triangles
9 vertices
19 20Generalized Triangle Strip
7 triangles
10 vertices
v0 v1 v2 v3 v2 v5 v4 v7 v6 v8
21Generalized Triangle Strip
7 triangles
10 vertices
v0 v1 v2 v3 v2 v5 v4 v7 v6 v8
22Generalized Triangle Strip
swap
v2
7 triangles
10 vertices
v0 v1 v2 v3 v2 v5 v4 v7 v6 v8
23Stripification Algorithms
- finding good set of triangle strips (e.g. few
swaps, restarts) isnt easy - computing optimal solution is NP hard
- proposed tools with good heuristics
- STRIPE (96, Evans et al.)
- SWAPS (97, Speckmann Snoeyink)
- FGTS (99, Xiang et al.)
24Storing a Mesh
25Storing a Mesh
- Where are the vertices located ? ? mesh
geometry - Which vertices form a triangle? ? mesh
connectivity
26Standard 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
27Standard Representation
list of vertices list of triangles
x0 y0 z0 1 4 20 x1 y1 z1
x2 y2 z2 x3 y3 z3 4 x4 y4 z4 6 4 . . .
. . xn yn zn
28Standard Representation
list of vertices list of triangles
x0 y0 z0 1 4 20 x1 y1 z1
x2 y2 z2 x3 y3 z3 4 x4 y4 z4 6 4 . . .
. . xn yn zn
29Standard Representation
list of vertices list of triangles
x0 y0 z0 1 4 20 x1 y1 z1
x2 y2 z2 x3 y3 z3 4 x4 y4 z4 6 4 . . .
. . xn yn zn
30Standard Representation
list of vertices list of triangles
x0 y0 z0 1 4 20 x1 y1 z1
x2 y2 z2 x3 y3 z3 4 x4 y4 z4 6 4 . . .
. . xn yn zn
31Standard Representation
list of vertices list of triangles
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
. . . . .
. . . . .
. . . . .
32Connectivity
list of vertices list of triangles
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
Storage costs 6 log(n) bpv
. . . . .
. . . . .
. . . . .
33Storing a Stripified Mesh
34Storing a Stripified Mesh
- Where are the vertices located ? ? mesh
geometry - Which vertices form a triangle? ? mesh
connectivity
35Storing a Stripified Mesh
- Where are the vertices located ? ? mesh
geometry - Which vertices form a triangle? ? mesh
connectivity - Which triangles form a strip? ?
mesh stripification
36Storing a Stripified Mesh
- Where are the vertices located ? ? mesh
geometry
- Which vertices form a triangle strip? ? mesh
connectivity ? mesh stripification
37Standard 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
38Standard Representation
list of vertices list of triangle strips x0
y0 z0 1 4 20 30 0 . . . x1 y1
z1 1 0 40 20 4 . . . x2 y2
z2 7 4 50 80 4 . . . x3 y3 z3
4 x4 y4 z4 6 4 . . . . . xn yn zn
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
39Connectivity and Stripification
list of vertices list of triangle strips x0
y0 z0 1 4 20 30 0 . . . x1 y1
z1 1 0 40 20 4 . . . x2 y2
z2 7 4 50 80 4 . . . x3 y3 z3
4 x4 y4 z4 6 4 . . . . . xn yn zn
Storage costs 23 log(n) bpv
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
40Connectivity Compressionfor Triangle Meshes
41Compression Techniques
- Keeler Westbrook 95
- Taubin Rossignac 96
- Tauma Gotsman 98
- Rossignac 98
- DeFloriani et al 99
- Isenburg Snoeyink 99
42Compression Techniques
Short Encodings of Planar Graphs and Maps 4.6 bpv
(4.6)
- Keeler Westbrook 95
- Taubin Rossignac 96
- Tauma Gotsman 98
- Rossignac 98
- DeFloriani et al 99
- Isenburg Snoeyink 99
43Compression Techniques
Topological Surgery 2.4 7.0 bpv (--)
- Keeler Westbrook 95
- Taubin Rossignac 96
- Tauma Gotsman 98
- Rossignac 98
- DeFloriani et al 99
- Isenburg Snoeyink 99
44Compression Techniques
Triangle Mesh Compression 0.2 2.9 bpv (--)
- Keeler Westbrook 95
- Taubin Rossignac 96
- Tauma Gotsman 98
- Rossignac 98
- DeFloriani et al 99
- Isenburg Snoeyink 99
45Compression Techniques
Edgebreaker 3.2 4.0 bpv (4.0)
- Keeler Westbrook 95
- Taubin Rossignac 96
- Tauma Gotsman 98
- Rossignac 98
- DeFloriani et al 99
- Isenburg Snoeyink 99
46Compression Techniques
A Simple and Efficient Encoding for Triangle
Meshes 4.2 5.4 bpv (6.0)
- Keeler Westbrook 95
- Taubin Rossignac 96
- Tauma Gotsman 98
- Rossignac 98
- DeFloriani et al 99
- Isenburg Snoeyink 99
47Compression Techniques
Mesh Collapse Compression 1.1 3.4 bpv (--)
- Keeler Westbrook 95
- Taubin Rossignac 96
- Tauma Gotsman 98
- Rossignac 98
- DeFloriani et al 99
- Isenburg Snoeyink 99
48strip-internal edges
49strip-internal edges
1
1
1
1
1
1
1
1
1
1
1
1
50strip-internal edges
3 bpv
0
0
0
1
1
0
1
1
0
0
1
0
0
1
0
1
1
1
0
1
1
0
1
0
0
0
51Triangle Fixer
52Encoding scheme
Define initial active boundary around arbitrary
edge of mesh.
53Encoding scheme
Define initial active gate as one of the two
boundary edges.
54Encoding scheme
Label active gate with T, R, L, S, or E.
55Encoding scheme
Label active gate with T, R, L, S, or E. Which
label ? Depends on its adacency relation with the
boundary.
56Encoding scheme
Label active gate with T, R, L, S, or E. Which
label ? Depends on its adacency relation with the
boundary. Update active boundary and active gate.
57Encoding scheme
Label active gate with T, R, L, S, or E. Which
label ? Depends on its adacency relation with the
boundary. Update active boundary and active
gate. Boundary is expanded (T), is shrunk (R and
L), is split (S), or is terminated (E).
58Label T
Active gate not adjacent to other boundary edge.
before
59Label T
before
after
60Label R
Active gate adjacent to next edge along active
boundary.
before
61Label R
before
after
62Label L
Active gate adjacent to previous edge along
active boundary.
before
63Label L
before
after
64Label S
Active gate adjacent to some other edge of
active boundary.
before
65Label S
Active gate adjacent to some other edge of
active boundary.
66Label S
Active gate adjacent to some other edge of
active boundary.
before
67Label S
before
after
68Label E
Active gate adjacent to previous and next edge
along active boundary.
before
69Label E
before
after
70Example Run Encoding
71 72 73 T
74 T
75 T
76 T
77 T
78 R
79 T
80 T
81 T
82 T
83 R
84 T
85 T
86 T
87 T
88 R
89 T
90 H10
91 R
92 R
93 R
94 R
95 R
96 R
97 R
98 R
99 E
100 101Example Run Decoding
102E
103R
104 R
105 R
106 R
107 R
108 R
109 R
110 R
111 H10
112 T
113 R
114 T
115 T
116 T
117 T
118 R
119 T
120 T
121 T
122 T
123 R
124 T
125 T
126 T
127 T
128 T
129 130 131Holes and Handles
132Simple Mesh
133Mesh with Holes
134Mesh with Handle
135Mesh with Handle and Holes
136Encoding a hole
- use new label H
- associate integer called size with label H that
specifies number of edges/vertices around hole - one label Hsize per hole
- total number of labels remains equal to number of
mesh edges
137Label Hsize
Active gate adjacent to hole of size
edges/vertices.
before
hole
138Label Hsize
before
after
hole
139Encoding a handle
- use new label M
- associate three integers called index, offset1,
and offset2 with label M that specify current
configuration - one label Midx,off1,off2 per handle
- total number of labels remains equal to number of
mesh edges
140Label Midx,off1,off2
Active gate adjacent to some edge of boundary in
stack.
before
141Label Midx,off1,off2
before
after
offset2
offset1
index in stack
142Triangle Strip Compression
143Triangle Strip Compression
- let triangle strips guide the mesh traversal
- replace label T with labels TR, TL, TB, and TE
- traversing along strip means progress for both
- encoding connectivity
- encoding stripification
144Label TR
Triangle strip leaves triangle on the right.
before
145Label TR
before
after
146Label TL
Triangle strip leaves triangle on the left.
before
147Label TL
before
after
148Label TB
Triangle strip leaves triangle on the left and on
the right.
before
149Label TB
before
after
150Label TE (case 1)
Triangle strip ends in triangle.
AND Its the last triangle of current
strip. It doesnt follow a label of
type TB.
before
151Label TE (case 1)
before
after
152Label TE (case 2)
Triangle strip ends in triangle.
AND Not the last triangle of current
strip. It follows a label of type TB.
before
153Label TE (case 2)
after
before
154Example Run Encoding
155 156 157 158 TL
159 TR
160 TR
161 TR
162 TE
163 164 165 TB
166 TL
167 TR
168 TR
169 TL
170 TR
171 TR
172 TE
173 174 TE
175 176 177 H10
178 R
179 R
180R
181 R
182 R
183 S
184L
185 L
186 E
187 R
188 R
189 E
190 191Example Run Decoding
192calculate offset
TL TR TL TL TE TB TL TR TR TL TR
TR TE TE H10 R R R R R S L L E R R E
Offset 6
193E
194R
195 R
196 E
197 L
198 L
199 S
200 R
201 R
202 R
203 R
204 R
205 H10
206 TE
207 TE
208 TE
209 TE
210 TE
211 TR
212 TR
213 TL
214 TR
215 TR
216 TL
217 TB
218 219 220 TE
221 TR
222 TR
223 TR
224 TL
225 226 227 228Compressing the label sequence
229Fixed-Bit Encoding
- map label types to unique bit-codesexample
- frequent labels are mapped to short bit-codes
- make mapping dependent on last label (e.g. one
label memory) - very simple implementation
T ? 0 R ? 01 S ? 0001 L ? 001 E ? 0011
230Arithmetic 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 4 KB - implemented with fast bit operations
231Results
232Fandisk
233Eight
234Bunny
235Trice