Download presentation
Presentation is loading. Please wait.
1
Rossignac, Szymczak, King, Safonova
Second generation geometry compression: Edgebreaker is fast, simple, and effective Rossignac, Szymczak, King, Safonova Gumhold Isenberg&Snoeyink Coors Lopes
2
Edgebreaker (Rossignac98)
Area not yet covered Decompress Compress Specification of the next triangle The author has recently devised a new simple compression scheme which requires only 2 bits per triangle. The scheme is based on a systematic traversal of the mesh, one triangle at a time. At each step of the compression process, the visited triangle is removed from the mesh and the mesh boundary is adjusted (left). At each step of the decompression algorithm, the next triangle is added to the mesh and the boundary adjusted (right). The transfer seem to remove triangles from the server and send them one by one to the client. The power of the algorithm lies in the fact that the server (compression algorithm) has a consistent way of deciding which triangle to send next and that the client (decompression algorithm) uses the same logic to decide where to attach the new triangle. In both cases a unique edge is identified in the boundary of the current mesh (marked in red). It is called the active edge. The compression algorithm removes and encodes the only triangle in the mesh that is adjacent to the active edge. (The opposite triangle has been removed or was never part of the mesh.) The decompression algorithm attaches the next triangle to the left of the active edge. Both update the active edge in the same manner for the next operation. Compress Decompress Binary format Sequence of specification for adding triangles
3
Same spiraling traversal as TS-MPEG4
4
Edgebreaker’s state machine
Siggraph'98 Course21: 3D Geometry Compression Edgebreaker’s state machine ? x ? C Marked (visited) Not marked ? Next to be encoded To-do stack x Last visited ? x ? L if tip vertex not marked then C else if left neighbor marked then if right neighbor marked then E else L else if right neighbor marked then R else S ? x ? R ? x ? S Encode sequence of codes C: 0, L:110, R: 101, S:100, E:111 Only 2T bits (because |C|=V=T/2) ? x E and vertices as encountered by C operations Jarek Rossignac 3
5
Examples of Edgebreaker compression
Siggraph'98 Course21: 3D Geometry Compression Examples of Edgebreaker compression ? ? C x C C R ? ? L R C C C x C R C C ? CCCCRCCRCRC… ? R x R R R ? ? S L C L E x S R E R C ? ? E …CRSRLECRRRLE x Jarek Rossignac 4
6
Corner table: data structure for T-meshes
c.v c.o c.n Table of corners, for each corner c store: c.v : integer reference to vertex table c.o : integer reference to opposite corner c.o may be derived from c.v Make the 3 corners of each triangle consecutive List them according to ccw orientation of triangles Trivial access to triangle ID: c.t = INT(c/3) c.n = 3c.t + (c+1)MOD 3, c.p = c.n.n, c.l = c.p.o, c.r = c.n.o c.l c.r c.p c.t Triangle 0 corner Triangle 0 corner Triangle 0 corner Triangle 1 corner Triangle 1 corner Triangle 1 corner v o 1 2 3 4 5 vertex 1 x y z vertex 2 x y z vertex 3 x y z vertex 4 x y z
7
Edgebreaker compression algorithm
T1 c T1 c T1 c T2 c T2 c T2 c v o recursive procedure compress (c) repeat { c.t.m:=visited; # mark the triangle as visited if c.v.m==not visited # test whether tip vertex was visited then { write(vertices, c.v); # append vertex index to “vertices” write(clers, C); # append encoding of C to “clers” c.v.m:= visited; # mark tip vertex as visited c:=c.r} # continue with the right neighbor else if c.r.t.m==painted # test whether right triangle was visited then if c.l.t.m== visited # test whether left triangle was visited then {write(clers, E); # append encoding of E to clers string return } # exit (or return from recursive call) else {write(clers, R); # append encoding of R to clers string c:=c.l } # move to left triangle else if c.l.t.m == visited # test whether left triangle was visited then {write(clers, L); # append encoding of L to clers string c:=c.r } # move to right triangle else {write(clers, S); # append encoding of S to clers string compress(c.r); # recursive call to visit right branch first c:=c.l } } # move to left triangle v1 x y z v2 x y z v3 x y z v4 x y z c c.t c.v c.l c.r c.o C R S L E a b vertices=…ab, clers = ...CRSRLECRRRLE (2T bit code: C=0, L=110, R=101, S=100, E=111)
8
Decompression Receive the CLERS sequence Decode it
Siggraph'98 Course21: 3D Geometry Compression Decompression Receive the CLERS sequence Decode it Construct the triangle tree Decode&reconstruct vertices R R R L C L E …CRSRLECRRRLE E S R R C How to zip up the cracks? Jarek Rossignac 7
9
Wrap&Zip decompression (Rossignac&Szymczak99)
Siggraph'98 Course21: 3D Geometry Compression Wrap&Zip decompression (Rossignac&Szymczak99) Orient bounding edges while building triangle tree at decompression. All oriented clockwise (up tree), except for C and the seed triangle: C L E R S seed Then ZIP all pairs of adjacent bounding edges when both point away from their common vertex. C R S L E C R S L E R R R L C L E E S R CRSRLECRRRLE C R Linear time complexity. Zip only after L and E. Jarek Rossignac 8
10
Wrap&Zip properties Only L and E require checking whether zipping is possible No new zipping is made possible by C, R, S L creates at most one zip (one pair of edges, no iteration) E operation creates at least 2 zips # of zipping operations = # of edges in vertex tree An edge can only be tried and rejected for zipping only once Wrap&Zip has linear time complexity (very fast in practice) C S R L E
11
Spirale Reversi (Isenburg&Snoeyink 99)
“Spirale Reversi: Reverse decoding of the Edgebreaker encoding” Decompression for Edgebreaker similar to Wrap&Zip Reads CLERS string backward Reconstructs mesh backwards Assigns vertices before the C operation defines them
12
Reversi Decompression (Isenburg&Snoeyink 99)
L S E compression clers = …CCRRCCRRRCRRCRCRRCCCRRCRRCRCRRRCRCRCRRSCRRSLERERLCRRRSEE reversi = EESRRRCLRERELSRRCSRRCRCRCRRRCRCRRCRRCCCRRCRCRRCRRRCCRRCC… decompression
13
Reversi details 1 2 1 1 1 2 1 1 O = EES O = EESRRRCLR O = E O = EE
O = EESRRRCLRER 1 2 O = EESRRRCLR 1 O = EES O = E 1 O = EE 1 2 1 1 O = EESRRRCLRERELSRRC O = EESRRRCLREREL O = EESRRRCLRERELSRRCS O = EESRRRCLRERELSRRCSRRCRCRCRRRCRCRRCRRCCCRRCRCRRCRRRCCRRCC…
14
Expected/measured results of Edgebreaker
Siggraph'98 Course21: 3D Geometry Compression Expected/measured results of Edgebreaker Expected 1.7T bit and guaranteed 2.0T bit code CL and CE combinations are impossible Use a shorter code for S (11) and R (10) when they follow a C On average 36% of symbols are R. Half of them follow a C Expected 1.3T to 1.6T bits, guaranteed 2.0T bits Encode CC, CS, CR pairs as single symbols After even # of Cs: CR (01), CC (00), CS (1101), R (10), S(1111) L (1110), E (1100) Stanford Bunny: 1.3T bits, Delaunay triangulation: 1.6T bits Measured entropy codes 0.91 to 1.26T bits Huffman code: all words start with a consecutive sequence of C Bunny: 173 words, 0.85T bits for Huffman codes, 0.91T bits total Large model: 1,400 word dictionary (32Kb table, large part is fixed) Gzip on the result improves them by 2% Jarek Rossignac 5
15
Edgebreaker + Wrap&Zip Results
Siggraph'98 Course21: 3D Geometry Compression Edgebreaker + Wrap&Zip Results Compress: Visit&mark triangles, encode CLERS ops, encode vertices Decode: Build triangle tree, orient free edges, zip, label & decode vertices Compression results for connectivity information Guaranteed 2T bits for all meshes homeomorphic to a sphere C: 0, L:110, R: 101, S:100, E:111 (|C|=V=T/2) Measured entropy code: about 1T bits (dictionary not included) Publications ( Rossignac, Edgebreaker Compression, IEEE TVCG’99 Sigma Xi Award for Best Paper by Georgia Tech faculty published in 1999 Rossignac&Szymczak, Wrap&zip, CGTA’99 King&Rossignac: Guaranteed 3.67V bit encoding..., CCCG’99 Szymczak&King&Rossignac: Compression of regular meshes, CCCG’00 Jarek Rossignac 9
16
Edgebreaker Results Compression results for connectivity information
Siggraph'98 Course21: 3D Geometry Compression Edgebreaker Results Compression results for connectivity information Guaranteed 2T bits, entropy down to 0.9T bits for large models Source code available: 3 page detailed pseudo-code, arrays of integers, fast Publications < Rossignac, Edgebreaker Compression, IEEE TVCG’99 Sigma Xi Best Paper Award Rossignac&Szymczak, Wrap&zip, CGTA’99 King&Rossignac: Guaranteed 3.67V bit encoding..., CCCG’99 Szymczak&King&Rossignac: Mostly regular meshes, CCCG’00 …. Jarek Rossignac 9
17
Edgebreaker extensions and improvements
Better compression Tighter guaranteed upper bound (King&Rossignac, Gumhold): 1.80T bits Quadrilateral meshes (with Szymczak and King): 1.34T bits Sufficiently regular meshes (with Szymczak and King): 0.81T bits guaranteed Topological extensions Non manifold solids (with Cardoze) Handles (with Safonova, Szymczak, Coors, and Lopes) Holes (with Safonova) Geometry Optimal quantization (with King and Szymczak): best B and T Better predictors from connectivity and neighbors (with Coors) Higher dimension Tetrahedra for FEM (with Szymczak): 7T bits (prior to entropy) Pentatopes for 4D simulations (with Szymczak, and with Snoeyink) Progressive and error-resilient Compressed batches of vertex-split upgrades (with Pajarola): 3.5T bits (total) Tetrahedra (with Pajarola and Szymczak): 5T bits (after entropy)
18
Guaranteed 1.84T bit (King&Rossignac 99)
Siggraph'98 Course21: 3D Geometry Compression Guaranteed 1.84T bit (King&Rossignac 99) “Guaranteed 3.67v bits encoding of planar triangle graphs” Proc. 11th Canadian Conference on Computational Geometry, August 1999 Encoding of symbols that follow a C C is 0, S is 10, R is 11 3 possible encoding systems for symbols that do not follow a C Code I: C is 0, S is 100, R is 101, L is 110, E is 111 Code II: C is 00, S is 111, R is 10, L is 110, E is 01 Code III: C is 00, S is 010, R is 011, L is 10, E is 11 One of these 3 codes takes less than (2-1/6)T bits Use a 2-bit switch to identify which code is used for each model Further constraints (Gumhold 00): 1.80T bits guaranteed E is impossible after C, CCR, … Because they have increased the length of the bounding loop to more than 3 Jarek Rossignac 6
19
Quad meshes (King,Rossignac,Szymczak 99)
Siggraph'98 Course21: 3D Geometry Compression Quad meshes (King,Rossignac,Szymczak 99) “Connectivity Compression of Irregular Quad Meshes” Surfaces often approximated by irregular quad meshes Instead of triangulating, we encode quads directly Measured 0.24V to 1.14V bits, guaranteed 2.67V bits (vs 3.67) Equivalent to a smart triangulation + Edgebreaker Only \-splits (no /-split), as seen from the previous quad Guarantees the triangle-pair is consecutive in triangle tree First triangle of each quad cannot be R or E: 13 symbol pairs possible x ? Jarek Rossignac 10
20
Improved Edgebreaker code (Gumhold 00)
“New bounds on the encoding of planar triangulations” Siggraph course notes on “3D Geometry Compression” 1.8T bits guaranteed Exploits the length of the outer boundary of T-patch (>2) Not convenient for treating non-manifolds (See later) CE is impossible Was at least 3, C increased it to at least 4, can’t have an E CCRE is impossible Was at least 3, CC increased it to at least 5, R reduced it by 1, can’t have an E These constraints impact the probability of the next symbol and improve coding
21
Non-manifold boundaries (with Cardoze)
22
Holes (with Safonova) Many meshes have holes
Plug hole with a triangle fan (Touma&Gotsman’98) Encode identifiers for dummy vertices HLog(v) bits The boundary of holes may by non-manfold What is a hole?
23
Handles (with Lopes and Safonova)
24
Connectivity compression: An new problem?
Siggraph'98 Course21: 3D Geometry Compression Connectivity compression: An new problem? Use vertex permutation to encode incidence Denny,Sohler: Encoding a triangulation as a permutation of its point set, CCCG, 97 Compression of the connectivity graph (planar triangle graph) Itai,Rodeh: Representation of graphs, Acta Informatica, 82 Turan: On the succinct representation of graphs, Discrete Applied Math, 84 Naor: Succinct representation of general unlabeled graphs, Discrete Applied Math, 90 Keeler,Westbrook: Short encoding of planar graphs and maps, Discrete Applied Math, 93 Deering: Geometry Compression, Siggraph, 95 Taubin,Rossignac: Geometric compression through topological surgery, ACM ToG, 98 Taubin,Horn,Lazarus,Rossignac: Geometry coding and VRML, Proc. IEEE, 98 Touma,Gotsman: Triangle Mesh Compression, GI, 98 Gumbold,Straßer: Realtime Compression of Triangle Mesh Connectivity, Siggraph, 98 Rossignac: Edgebreaker: Compressing the incidence graph of triangle meshes, TVCG, 99 Rossignac,Szymczak: Wrap&Zip: Linear decompression of triangle meshes, CGTA, 99 Szymczak,Rossignac: Grow&Fold: Compression of tetrahedral meshes, ACM SM, 99 Compressed inverse of progressive simplification steps or batches Hoppe: Progressive meshes, Siggraph, 96 Taubin,Gueziec,Horn,Lazarus: Progressive forest split compression, Siggraph, 98 Pajarola,Rossignac: Compressed Progressive Meshes, IEEE TVCG99 Pajarola,Szymczak,Rossignac: ImplantSpray: Compressed Tetrahedral Meshes, VIS 99 Jarek Rossignac 8
25
Edgebereaker compression contributors
Szymczak: Decompression King: Improved code, quads Rossignac: Edgebreaker Safonova: Holes, implementation Isenburg (UCS): Spirale Reversi My latest achievment: “the compression of Greg’s bunny” As you see, it took an international congregation of expert hunters to surround the beast. Gotsman (Israel): Polygons Lopes (Brasil): Handles Gumhold (Germany): Better bounds Coors (Germany): Prediction
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.