3D MESH COMPRESSION
Supervisor: Mustafa ORAL Abbas ELMAS
Investigation of Single-Rate Triangular
Algorithms
Outline
2
Movies
3
“Rustboy” animated short by Brian Taylor
Engineering
4
“Audi A8” created by Roland Wolf
Architectural Visualization
5
“Atrium” created by Karol Myszkowski and Frederic Drago
Product Catalogues
6
“Bedroom set-model Assisi” created by Stolid
Historical Study
7
scanning of “Michelangelo’s David” courtesy of Marc Levoy
Computer Games
8
screenshot of “The village of Gnisis”, The Elder Scrolls III
3D Object Representation
9
3D Object Representation
10
Taxonomy of 3D Object
11
Mesh Basics
12
Approximation
13
Piecewise linear approximation
Error is O(h2)
Manifold & Non-Manifold
14
Manifold Mesh
15
Every edge is shared by exactly 2 faces
manifold mesh without boundary
with boundaries
boundary edges are incident to 1 face
Orientability
16
Oriented CCW:
{(C,D,A), (A,D,B), (C,B,D)}
Face Orientation
clockwise or counterclockwise order in which the vertices are listed
defines direction of face normal
Orientability
17
Oriented CW:
{(C,A,D), (D,A,B), (B,C,D)}
Face Orientation
clockwise or counterclockwise order in which the vertices are listed
defines direction of face normal
Orientability
18
Not oriented:
{(C,D,A), (D,A,B), (C,B,D)}
Face Orientation
clockwise or counterclockwise order in which the vertices are listed
defines direction of face normal
Closed vs. Open
19
Mesh Zoo
20
Mesh Representation
21
Mesh Representation
22
v -1.921780 0.334600 -1.851650
v -1.870020 -0.147810 -1.590690
v -1.804130 -0.552500 -1.695600
v -1.765380 -0.799380 -1.719970
v -1.673300 -1.075550 -1.538570
v -0.909274 -2.233340 -0.669400
v -0.523504 -2.452820 -0.553910
v -0.094598 -2.490290 -0.357730
v -1.367100 -1.671460 -1.087440
v -1.621700 -1.004640 -1.284810
v -1.484120 -1.143750 -1.013800
v -1.267090 -1.382210 -0.773020
v -1.132620 -1.754880 -0.703400
v -0.997273 -2.029990 -0.613760
v -0.606300 -2.349870 -0.249120
v -0.292278 -2.454410 -0.194550
v -0.749425 -2.149810 -0.277870
v -0.524425 -2.174190 -0.015380
v -0.378640 -2.351140 -0.031840
f 5 9 10
f 10 9 11
f 11 9 12
f 12 9 13
f 13 9 14
f 14 9 6
f 16 15 7
f 7 15 6
f 6 15 17
f 17 15 18
f 18 15 19
f 19 15 16
f 16 8 20
f 20 21 19
f 19 21 18
f 18 21 22
f 22 21 23
f 23 21 24
f 24 21 20
Data Structures
normal, color, texture
per vertex, per edge, per face
23
Data Structures
Vertices of face #7?
Which faces are adjacent to face #3?
Remove / Add / Split / Collapse
24
Data Structures
25
Face Set
26
Indexed Face Set
27
Indexed Face Set
28
list of vertices
x0 y0 z0
x1 y1 z1
x2 y2 z2
x3 y3 z3
x4 y4 z4
. . .
xn yn zn
list of faces
1 4 2
Indexed Face Set
29
list of vertices
x0 y0 z0
x1 y1 z1
x2 y2 z2
x3 y3 z3
x4 y4 z4
. . .
xn yn zn
list of faces
1 4 2
2 3 0
4 0 5
3 4 5
5 0 2
. . .
Adjacency Matrix
30
If there is an edge between vi and vj then Aij = 1
Adjacency Lists - Full
31
Adjacency Lists - Partial
32
Winged-Edge
33
Half-Edge
34
Winged-Edge
Optimized Winged-Edge
Half-Edge
Corner Table
35
Corner Table
36
Corner Table
37
3D MESH COMPRESSION
38
Mesh Compression
=> Mesh Geometry
=> Mesh Connectivity
39
40
41
Compression Algorithms
42
Java3D
MPEG – 4
Virtue3D ?
Open3DGC
Draco
Harry
Other algorithms
43
Geometry Compression�Deering
44
Generalized Triangle Strip (Example)
Generalized Triangle Strip (Example)
Generalized Triangle Strip (Example)
Generalized Triangle Strip (Example)
Generalized Triangle Strip (Example)
Generalized Triangle Strip (Example)
Generalized Triangle Strip (Example)
Generalized Triangle Strip (Example)
Generalized Triangle Strip (Example)
Generalized Triangle Mesh
54
Geometry Compression�Deering
55
Redundancy ~ 2
One symbol per face → 2V symbols
Topological Surgery
56
Topological Surgery
57
Topological Surgery
58
Topological Surgery
59
Topological Surgery
60
Topological Surgery
61
EdgeBreaker
62
EdgeBreaker
63
Edgebreaker in Action
64
5
processed�region
unprocessed �region
compression
boundary
65
5
processed�region
unprocessed �region
compression
boundary
C
C
66
5
processed�region
unprocessed �region
compression
boundary
C
C
C C
67
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C C R
68
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
C C R C
69
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
C C R C R
70
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
C C R C R S
71
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C C R C R S L
72
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
C C R C R S L C
73
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C C R C R S L C R
74
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
C C R C R S L C R C
75
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C C R C R S L C R C R
76
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C
C C R C R S L C R C R C
77
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C
R
C C R C R S L C R C R C R
78
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C
R
R
C C R C R S L C R C R C R R
79
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C
R
R
R
C C R C R S L C R C R C R R R
80
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C
R
R
R
L
C C R C R S L C R C R C R R R L
81
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C
R
R
R
L
C
C C R C R S L C R C R C R R R L C
82
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C
R
R
R
L
C
R
C C R C R S L C R C R C R R R L C R
83
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C
R
R
R
L
C
R
R
C C R C R S L C R C R C R R R L C R R
84
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C
R
R
R
L
C
R
R
R
C C R C R S L C R C R C R R R L C R R R
85
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C
R
R
R
L
C
R
R
R
S
C C R C R S L C R C R C R R R L C R R R S
86
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
C C R C R S L C R C R C R R R L C R R R S R
S
L
C
R
C
R
C
R
R
R
L
C
R
R
R
S
R
87
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C
R
R
R
L
C
R
R
R
S
E
R
C C R C R S L C R C R C R R R L C R R R S R E
88
5
processed�region
unprocessed �region
compression
boundary
C
C
R
C
R
S
L
C
R
C
R
C
R
R
R
L
C
R
R
R
S
E
R
E
C C R C R S L C R C R C R R R L C R R R S R E E
Triangle Mesh Compression�Touma & Gotsman
89
Touma & Gotsman
90
TG coder
91
5
processed�region
unprocessed �region
compression
boundary
slot counts
TG coder
92
5
processed�region
unprocessed �region
compression
boundary
7
7
TG coder
93
5
processed�region
unprocessed �region
compression
boundary
7
6
7 6
zero slot
TG coder
94
5
processed�region
unprocessed �region
compression
boundary
7
6
7 6
TG coder
95
5
processed�region
unprocessed �region
compression
boundary
7
6
5
7 6 5
zero slot
TG coder
96
5
processed�region
unprocessed �region
compression
boundary
7
6
5
7 6 5
TG coder
97
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7 6 5 S
TG coder
98
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7 6 5 S
TG coder
99
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
7 6 5 S 7
TG coder
100
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
7 6 5 S 7
zero slot
TG coder
101
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
7 6 5 S 7
zero slot
TG coder
102
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
7 6 5 S 7
TG coder
103
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
7 6 5 S 7 6
TG coder
104
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
7 6 5 S 7 6
TG coder
105
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
5
7 6 5 S 7 6 5
TG coder�
106
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
5
7 6 5 S 7 6 5
TG coder
107
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
5
7 6 5 S 7 6 5
TG coder
108
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
5
7 6 5 S 7 6 5
TG coder
109
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
5
7 6 5 S 7 6 5
TG coder
110
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
5
6
7 6 5 S 7 6 5 6
TG coder
111
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
5
6
7 6 5 S 7 6 5 6
TG coder
112
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
5
6
7 6 5 S 7 6 5 6
TG coder
113
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
5
6
7 6 5 S 7 6 5 6
TG coder
114
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
5
6
7 6 5 S 7 6 5 6
TG coder
115
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
5
6
7 6 5 S 7 6 5 6
TG coder
116
5
processed�region
unprocessed �region
compression
boundary
7
6
5
S
7
6
5
6
7 6 5 S 7 6 5 6 7
7
…
Valence Driven Connectivity
117
Angle Analyzer
118
Angle Analyzer
Angle-based Geometry
119
α
β
γ
(α, β, γ)
Front vertex
Front face
V0
V1
Freelence Coder
120
TFAN Open3DGC
121
Quantization
122
Quantization
123
Prediction
Delta Prediction Example
124
Prediction
Parallelogram Prediction
125
126
Category | Algorithm | Storage Cost |
Generalized Triangle Strip | (Deering 1995a) | 1:4 - 1: 10 / 8-11 bpv |
| (Chow 1997) | 1:30 - 1:37 |
Spanning Tree | (Taubin and Rossignac 1998) | 2.48 - 7 bpv |
| (Diaz-Gutierrez et al. 2005) | 2* bpt |
| (Li and Kuo 1998) | 1,5 bpt |
Layered Decomp. | (Bajaj et al. 1999) | 1.4 - 6.08 bpv |
Valence-Driven | (Touma and Gotsman 1998) | 0.2 - 2.4 bpv |
| (Alliez and Desbrun 2001a) | 0.024 - 2.96 /3.24* bpv |
| (Isenburg and Snoeyink 2000) | 1.67 - 2.92 bpv |
| (Kälberer et al. 2005) | 0.03 - 2.11 bpv |
| (Mamou et al. 2009) | 0.2 - 2.7 bpv |
Triangle Conquest | (Gumhold and Straßer 1998) | 3.22 - 8.94 bpv |
| (Gumhold 1999) | 0.3 - 2.7 bpv |
| (Rossignac 1999) | 1.8 - 2.4 / 4* bpv |
| (King and Rossignac 1999) | 3.67* bpv |
| (Gumhold 2000) | 3.52* bpv |
| (Szymczak et al. 2001) | 1.622* bpv |
| (Lee et al. 2002) | 1.5 / 4* bpv |
OUR CONTRIBUTION
127
Dataset
128
129
Our Proposed Methods
130
Collected / Compiled Methods
131
BCCM and CBCM applied version
GENERAL PURPOSE COMPRESSION
132
Selected 10 Compressors
133
Based on Compression Algorithm | Compressors | Extra Applied Methods |
Burrows-Wheelers Transform | bcm | Order-0 Context Modeling |
| bzip2 |
|
Reduced Offset Lempel-Ziv | balz 1 | Arithmetic Coding |
Lempel-Ziv-Markov-Algorithm | lzlib 9 |
|
| lzma 9 |
|
| lzham 4 |
|
Lempel-Ziv-77 | zpaq 5 | Heavy Context Modeling |
| brotli 11 | Order-2 Context Modeling |
| zstd 22 | Finite State Entropy |
| libdeflate 12 |
|
GENERAL PURPOSE COMPRESSION
on Geometry
138
PERFORMANCE�RESULTS
143
Testbed
144