1 of 148

3D MESH COMPRESSION

Supervisor: Mustafa ORAL Abbas ELMAS

Investigation of Single-Rate Triangular

Algorithms

2 of 148

Outline

  • 3D Mesh
    • Usage Areas
    • Basics
    • Representation
  • Mesh Data Structures
  • 3D Mesh Compression
    • Connectivity
    • Geometry
      • Quantization
      • Prediction
  • Our Contribution
  • General-Purpose Compression
  • Performance Results

2

3 of 148

Movies

3

“Rustboy” animated short by Brian Taylor

4 of 148

Engineering

4

“Audi A8” created by Roland Wolf

5 of 148

Architectural Visualization

5

“Atrium” created by Karol Myszkowski and Frederic Drago

6 of 148

Product Catalogues

6

“Bedroom set-model Assisi” created by Stolid

7 of 148

Historical Study

7

scanning of “Michelangelo’s David” courtesy of Marc Levoy

8 of 148

Computer Games

8

screenshot of “The village of Gnisis”, The Elder Scrolls III

9 of 148

3D Object Representation

  • Raw Data
    • Point Cloud
    • Range Image
    • Polygon Soup

  • Surfaces
    • Mesh
    • Subdivision
    • Parametric
    • Implicit
  • Solids
    • Voxels
    • BSP tree
    • Cell complex

  • High-level Structure
    • CSG
    • Scene Graph
    • Skeleton
    • Sweep
    • Generative model

9

10 of 148

3D Object Representation

  • Raw Data
    • Point Cloud
    • Range Image
    • Polygon Soup

  • Surfaces
    • Mesh
    • Subdivision
    • Parametric
    • Implicit
  • Solids
    • Voxels
    • BSP tree
    • Cell complex

  • High-level Structure
    • CSG
    • Scene Graph
    • Skeleton
    • Sweep
    • Generative model

10

11 of 148

Taxonomy of 3D Object

11

12 of 148

Mesh Basics

12

13 of 148

Approximation

13

Piecewise linear approximation

Error is O(h2)

14 of 148

Manifold & Non-Manifold

14

15 of 148

Manifold Mesh

15

Every edge is shared by exactly 2 faces

manifold mesh without boundary

with boundaries

boundary edges are incident to 1 face

16 of 148

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

17 of 148

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

18 of 148

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

19 of 148

Closed vs. Open

19

20 of 148

Mesh Zoo

20

21 of 148

Mesh Representation

  • Each triangle represented by 3 vertices.
    • Each vertices represented by 3 coordinates
      • Each coordinate is represented by a 32 bit float
  • Not mentioned the …
    • Colors, normals, textures, motions etc.

21

22 of 148

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

23 of 148

Data Structures

  • What should be stored?
    • Geometry: 3D coordinates
    • Connectivity: adjacency relationship
    • Attributes:

normal, color, texture

per vertex, per edge, per face

23

24 of 148

Data Structures

  • What should it support?
    • Rendering
    • Geometry Queries

Vertices of face #7?

Which faces are adjacent to face #3?

    • Modification

Remove / Add / Split / Collapse

24

25 of 148

Data Structures

  • Face Set
  • Indexed Face Set
  • Adjacency Matrix
  • Adjacency Lists
  • Winged-Edge
  • Half-Edge
  • Corner Table

25

26 of 148

Face Set

26

  • Simple
  • STL File
  • No Connectivity
  • Redundancy

27 of 148

Indexed Face Set

27

  • Connectivity
  • No Neighbourhood

28 of 148

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

29 of 148

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

. . .

30 of 148

Adjacency Matrix

30

If there is an edge between vi and vj then Aij = 1

  • Can represent non‐manifold meshes
  • No connection between a vertex and its adjacent faces

31 of 148

Adjacency Lists - Full

31

32 of 148

Adjacency Lists - Partial

32

33 of 148

Winged-Edge

33

34 of 148

Half-Edge

34

Winged-Edge

Optimized Winged-Edge

Half-Edge

35 of 148

Corner Table

35

36 of 148

Corner Table

36

37 of 148

Corner Table

  • Pros:
    • All queries in O(1) time
    • Most operations are O(1)
    • Convenient for rendering
  • Cons:
    • Only triangular, manifold meshes
    • Redundancy

37

38 of 148

3D MESH COMPRESSION

38

39 of 148

Mesh Compression

  • Minimal information need to be stored:
    • Where are the vertices located?

=> Mesh Geometry

    • How are the vertices connected?

=> Mesh Connectivity

39

40 of 148

40

41 of 148

41

42 of 148

Compression Algorithms

  • Geometry Compression�Deering
  • Topological Surgery �Taubin & Rossignac
  • Triangle Mesh Compression�Touma & Gotsman
  • The Cut-Border-Machine�Gumhold & Straber
  • Edgebreaker�Rossignac
  • Valence Driven Connectivity Encoding�Alliez & Desbrun
  • Angle Analyzer�Lee
  • TFAN�Mamou

42

Java3D

MPEG 4

Virtue3D ?

Open3DGC

Draco

Harry

43 of 148

Other algorithms

  • Generalized Triangle Strip
    • Deering, ’95 - Chow ’97
  • Spanning Tree
    • Taubin and Rossignac ’98 - Diaz-Gutierrez et al. ‘05
  • Layered Decomposition
    • Bajaj et al. ‘99
  • Valence-Driven
    • Touma and Gotsman ’98 - Alliez and Desbrun ‘01
    • Isenburg and Snoeyink ’00 - Kalberer et al. ’05
    • Mamou et al. ‘09
  • Triangle Conquest
    • Gumhold and Staber ’98 - Rossignac ‘99
    • Lee et al. ‘02

43

44 of 148

Geometry Compression�Deering

  • Convert triangle mesh data to generalized triangle mesh
  • Quantization of positions, colors, normals
  • Delta encoding of quantized values
  • Huffman tag-based variable-length encoding of deltas
  • Output binary output stream with Huffman table initializations and geometry compression instructions

44

45 of 148

Generalized Triangle Strip (Example)

46 of 148

Generalized Triangle Strip (Example)

47 of 148

Generalized Triangle Strip (Example)

48 of 148

Generalized Triangle Strip (Example)

49 of 148

Generalized Triangle Strip (Example)

50 of 148

Generalized Triangle Strip (Example)

51 of 148

Generalized Triangle Strip (Example)

52 of 148

Generalized Triangle Strip (Example)

53 of 148

Generalized Triangle Strip (Example)

54 of 148

Generalized Triangle Mesh

54

55 of 148

Geometry Compression�Deering

55

  • Fast
  • Local well suited for hw
  • 8-11 bpv for connectivity
  • Geometry: highly variable
  • Integrated in Java3D

Redundancy ~ 2

One symbol per face → 2V symbols

56 of 148

Topological Surgery

  • The idea is to cut a given mesh along a selected set of edges to make a planar mesh. The mesh connectivity is then represented by these cuts and planar mesh.

56

57 of 148

Topological Surgery

  • TS encodes a triangular mesh with about 2.5 to 6 b/v
  • Spanning trees: a vertex and a triangle spanning tree
  • Connectivity encoding is lossless.
  • Geometry is predictively encoded.
  • The correction vectors are entropy encoded.
  • Normals, and colors are quantized.
  • Obtaining the optimal spanning tree is an NP-hard problem.

57

58 of 148

Topological Surgery

58

59 of 148

Topological Surgery

59

60 of 148

Topological Surgery

60

61 of 148

Topological Surgery

61

62 of 148

EdgeBreaker

  • Lossless compression for a triangle mesh
  • Destroy triangles of the mesh one-by-one, starting from the boundary and spiraling inwards
  • For each destruction operation, store an opcode indicating the type of the operation
    • Sequence of opcodes is called “history”
    • Length of history = number of triangles, hence linear size encoding
  • Compression scheme: remove X, store the operation (C, L, E, R or S), update the bounding loop and advance the gate

62

63 of 148

EdgeBreaker

63

64 of 148

Edgebreaker in Action

64

5

processed�region

unprocessed �region

compression

boundary

65 of 148

65

5

processed�region

unprocessed �region

compression

boundary

C

C

66 of 148

66

5

processed�region

unprocessed �region

compression

boundary

C

C

C C

67 of 148

67

5

processed�region

unprocessed �region

compression

boundary

C

C

R

C C R

68 of 148

68

5

processed�region

unprocessed �region

compression

boundary

C

C

R

C

C C R C

69 of 148

69

5

processed�region

unprocessed �region

compression

boundary

C

C

R

C

R

C C R C R

70 of 148

70

5

processed�region

unprocessed �region

compression

boundary

C

C

R

C

R

S

C C R C R S

71 of 148

71

5

processed�region

unprocessed �region

compression

boundary

C

C

R

C

R

S

L

C C R C R S L

72 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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 of 148

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

89 of 148

Triangle Mesh Compression�Touma & Gotsman

  • The idea: Deterministic edge conquering from successive pivot vertices along an active edge list
  • Connectivity: Output one valence symbol per vertex
  • Huffman encoding of valences
  • Features:
    • Average: 2 b/v for connectivity
    • Bit-rate vanishes to zero when regular

89

90 of 148

Touma & Gotsman

90

91 of 148

TG coder

91

5

processed�region

unprocessed �region

compression

boundary

slot counts

92 of 148

TG coder

92

5

processed�region

unprocessed �region

compression

boundary

7

7

93 of 148

TG coder

93

5

processed�region

unprocessed �region

compression

boundary

7

6

7 6

zero slot

94 of 148

TG coder

94

5

processed�region

unprocessed �region

compression

boundary

7

6

7 6

95 of 148

TG coder

95

5

processed�region

unprocessed �region

compression

boundary

7

6

5

7 6 5

zero slot

96 of 148

TG coder

96

5

processed�region

unprocessed �region

compression

boundary

7

6

5

7 6 5

97 of 148

TG coder

97

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7 6 5 S

98 of 148

TG coder

98

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7 6 5 S

99 of 148

TG coder

99

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7

7 6 5 S 7

100 of 148

TG coder

100

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7

7 6 5 S 7

zero slot

101 of 148

TG coder

101

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7

7 6 5 S 7

zero slot

102 of 148

TG coder

102

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7

7 6 5 S 7

103 of 148

TG coder

103

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7

6

7 6 5 S 7 6

104 of 148

TG coder

104

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7

6

7 6 5 S 7 6

105 of 148

TG coder

105

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7

6

5

7 6 5 S 7 6 5

106 of 148

TG coder�

106

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7

6

5

7 6 5 S 7 6 5

107 of 148

TG coder

107

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7

6

5

7 6 5 S 7 6 5

108 of 148

TG coder

108

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7

6

5

7 6 5 S 7 6 5

109 of 148

TG coder

109

5

processed�region

unprocessed �region

compression

boundary

7

6

5

S

7

6

5

7 6 5 S 7 6 5

110 of 148

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

111 of 148

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

112 of 148

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

113 of 148

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

114 of 148

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

115 of 148

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

116 of 148

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

117 of 148

Valence Driven Connectivity

117

118 of 148

Angle Analyzer

118

119 of 148

Angle Analyzer

Angle-based Geometry

  • Single-pass algorithm
  • Quantize angles

  • Predefined ranges for angles:
    • (0, π) for α, β
    • (-π, π) for γ

119

α

β

γ

(α, β, γ)

Front vertex

Front face

V0

V1

120 of 148

Freelence Coder

120

121 of 148

TFAN Open3DGC

121

122 of 148

Quantization

122

123 of 148

Quantization

123

124 of 148

Prediction

Delta Prediction Example

124

125 of 148

Prediction

Parallelogram Prediction

125

126 of 148

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

127 of 148

OUR CONTRIBUTION

127

128 of 148

Dataset

  • Models gathered from public domain
  • 20 Models selected from other researchs
  • 25 files for each model�representing 17 different encoding
  • All models are oriented manifold meshes
  • # of vertices are from 162 to 1 million
  • There exist boundaries and holes
  • Genus is generally 0 but can be 0 to 104 throughout dataset

128

129 of 148

129

130 of 148

Our Proposed Methods

130

131 of 148

Collected / Compiled Methods

  • Deering
  • Harry (CBM)
  • TFAN Open3DGC
  • OpenCTM MG1
  • OpenCTM MG2
  • WebGL Loader
  • Draco
  • Corto
  • Alliez & Desbrun *
  • EdgeBreaker *

131

BCCM and CBCM applied version

132 of 148

GENERAL PURPOSE COMPRESSION

132

133 of 148

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

 

134 of 148

135 of 148

136 of 148

137 of 148

138 of 148

GENERAL PURPOSE COMPRESSION

on Geometry

138

139 of 148

140 of 148

141 of 148

142 of 148

143 of 148

PERFORMANCE�RESULTS

143

144 of 148

Testbed

144

145 of 148

146 of 148

147 of 148

148 of 148