Download presentation
Presentation is loading. Please wait.
1
Martin Isenburg Jack Snoeyink University of North Carolina Chapel Hill Mesh Collapse Compression
2
Introduction A novel scheme for encoding triangle mesh topology.
3
Introduction A novel scheme for encoding triangle mesh topology. –triangle mesh
4
Introduction A novel scheme for encoding triangle mesh topology. –triangle mesh –encoding
5
Introduction A novel scheme for encoding triangle mesh topology. –triangle mesh –encoding –topology
6
Triangle Mesh Computer Graphics Surface description Hardware support Used everyday Used everywhere Used by everybody Increasingly complex
7
Encoding Compressed representation Decrease storage and transmission time 011101101011...
8
Topology geometry versus topology x 0 y 0 z 0 0 1 2 x 1 y 1 z 1 2 3 0 x 2 y 2 z 2 2 3 1 x 3 y 3 z 3 2 4 3 x 4 y 4 z 4 5 4 3..... x n y n z n.....
9
Overview previous work simple meshes video example general meshes results summary
10
Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ]
11
Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] Geometry Compression
12
Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] Short Encodings of Planar Graphs and Maps 4.6 bpv (4.6)
13
Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] Topological Surgery 2.2 ~ 4.8 bpv (--)
14
Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] Triangle Mesh Compression 0.2 ~ 2.9 bpv (--)
15
Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] Edgebreaker 3.4 ~ 4.0 bpv (4.0)
16
Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] A Simple and Efficient Encoding for Triangle Meshes 4.2 ~ 5.4 bpv (6.0)
17
Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] Face Fixer 3.9 ~ 4.1 bpv (6.0)
18
Simple Meshes (1) the mesh is a surface composed of triangles (2) the mesh has no boundary (3) the mesh has no holes (4) the mesh has no handles
19
Simple Mesh
20
Mesh Collapse Compression i Input:Output: a simple mesh- a sequence of code words - a permutation of vertices
21
Compression Scheme (1) initialize - declare arbitrary directed mesh edge as current edge
22
Compression Scheme (2) loop until done (and usually): - contract current edge - record the removed vertex - record the degree - select new current edge
23
Compression Scheme (2) loop until done (but occasionally): - divide mesh along current edge - record start symbol - continue on one mesh part - record end symbol - continue on other mesh part
24
Digons A triangulation with exception of the outer face that is bound by only two edges.
25
mc-edge From Mesh to Digon mc-vertex cut and openrearrange new mc-edge
26
Various Digons simple trivialcomplex dividing edge
27
Encode Algorithm encode( Mesh mesh, Codec codec ) { stack.push( digonify( mesh ) ); while ( not stack.empty( ) ) { digon = stack.pop( ); while ( not digon.trivial ( ) ) { if ( digon.complex() ) { subdigon = mc-divide( digon ); stack.push( subdigon ); codec.pushCode( “S” ); } else { degree = mc-contract( digon ); codec.pushCode( degree ); } codec.push( “E” ); }
28
mc-contract contract mc-edge removeselectcontract new mc-edgeloop
29
mc-divide divideselect dividing edgemc-edge
30
Video
31
Example
33
mc-vertex
34
Example mc-edge
35
Example digonify mc-edge
36
Example
37
mc-contract degree of removed vertex removed vertex
38
Example
39
mc-contract removed vertex degree of removed vertex
40
Example
41
mc-contract removed vertex degree of removed vertex
42
Example
43
mc-contract removed vertex degree of removed vertex
44
Example
45
mc-divide divided vertex
46
Example mc-divide divided vertex
47
Example push on stack
48
Example
49
mc-contract degree of removed vertex
50
Example
51
trivial digon trivial digon
52
Example trivial digon
53
Example pop from stack
54
Example
55
mc-contract degree of removed vertex
56
Example
57
mc-contract degree of removed vertex removed vertex
58
Example
59
trivial digon trivial digon
60
Example trivial digon
61
Example
62
mc-tree
63
Example mc-tree embedded mc-tree
64
Example mc-tree
65
Example Vertex permutation Code word sequence mc-encodingmc-tree
66
Decode algorithm decode( Mesh mesh, Codec codec ) { while ( not codec.empty( ) ) { code = codec.popCode( ); if ( code == “E” ) { stack.push( digon ); digon = new Digon( ); } else if ( code == “S” ) { subdigon = stack.pop( ); mc-join( digon, subdigon ); } else { mc-expand( digon, code ); } mesh = undigonify ( digon ); }
67
General Meshes (1) the mesh is a surface composed of triangles (2) the mesh can have a boundary (3) the mesh can have holes (4) the mesh can have handles
68
Simple Mesh
69
Boundary
70
Holes
71
Handle
72
Handle & Boundary
73
Handle & Holes
74
Encoding a Boundary mc-vertex mc-edgeadded edge
75
Encoding a Hole holeadded vertex
76
Encoding a Handle digon in stack After mc-contract: M + index + [0..5] After mc-divide: M + index + [0..1] Hiding in a trivial digon: M + index + [0..7]
77
Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape
78
Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape
79
Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape
80
Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape
81
Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape
82
Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape
83
Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape
84
Summary We presented a novel scheme for encoding the topology of triangular meshes. The achieved compression rates of 1.1 ~ 3.4 bits/vertex compete with the best results known today. Currently we work on a progressive version of mc-compression.
85
Acknowledgements University of British Columbia at Vancouver, Canada Gene Lee and his RASP tools International Computer Science Institute (ICSI) at Berkeley, USA funding: NSERC, IRIS, UGF
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.