Compressing Hexahedral Volume Meshes Martin Isenburg Pierre Alliez
Compressing Hexahedral Volume Meshes Martin Isenburg Pierre Alliez UNC Chapel Hill INRIA Sophia-Antipolis
Overview • Volume Meshes • Related Work • Compressing Connectivity – Coding with Edge Degrees – Boundary Propagation – Adaptive Traversal • Compressing Geometry – Parallelogram Prediction • Demo
Take this home: “The connectivity of a hexahedral mesh can be coded through a sequence of its edge degrees. ” “This encoding naturally exploits the regularity commonly found in such data sets. ”
Volume Meshes
Volume Meshes • scientific & industrial applications – thermodynamics – structural mechanics –… • visualization & simulation • unstructured / irregular ( not on a grid ) • tetrahedral, hexahedral, polyhedral
Hexahedral Volume Meshes • have “numerical advantages in finite element computations” • challenging to generate • their internal structure looks “nice” compared to tetrahedral meshes
Ingredients • geometry : positions of vertices • connectivity : which vertices form a hexahedron • properties: attached to vertices density, pressure, heat, . . .
Standard Representation • connectivity log 2(v) hex 1 1 3 6 4 7 8 9 2 hex 2 4 5 8 2 9 1 6 7 8 h * 32 bits hex 3 7 5 … hexh • geometry vtx 1 ( x, y, z ) vtx 2 ( x, y, z ) 3 v * 32 bits vtx 3 ( x, y, z ) 16 vtxv less than 84 KB 1. 69 size: 3. 23 MB 71572 hexahedra 78618 vertices
Related Work
Surface Mesh Compression – Geometry Compression, [Deering, 95] – Topological Surgery, [Taubin & Rossignac, 98] – Cut-Border Machine, [Gumhold & Strasser, 98] – Triangle Mesh Compression, [Touma & Gotsman, 98] – Edgebreaker, [Rossignac, 99] – Spectral Compression of Geometry, [Karni & Gotsman, 00] – Face Fixer, [Isenburg & Snoeyink, 00] – Valence-driven Connectivity Coding, [Alliez & Desbrun, 01] – Near-Optimal Coding, [Khodakovsky, Alliez, Desbrun & – Degree Duality Coder, [Isenburg, 02] Schröder, 02] – Polygonal Parallelogram Prediction, [Isenburg & Alliez, 02]
Volume Mesh Compression – Grow & Fold, [Szymczak & Rossignac, 99] – Cut-Border Machine, [Gumhold, Guthe & Strasser, 99] – Rendering of compressed volume data, [Yang et al. , 01] Simplification: – Simplification of tetrahedral meshes, [Trotts et al. , 98] – Progressive Tetrahedralizations, [Staadt & Gross, 98] Progressive Compression: – Implant Sprays, [Pajarola, Rossignac & Szymczak, 99] !! only for tetrahedral meshes !!
Surface / Volume Connectivity a mesh with v vertices has maximal surfaces: 2 v-2 triangles ~ 6 v indices v-1 quadrilaterals ~ 4 v indices volumes: O(v 2) tetrahedra ~ 12 v indices O(v 2) hexahedra ~ 8 v indices connectivity dominates geometry even more for volume meshes
Degree Coding for Connectivity • Triangle Mesh Compression, [Touma & Gotsman, 98] • Valence-driven Connectivity Coding, [Alliez, Desbrun, 01] • Degree Duality Coder, [Isenburg, 02] • Near-Optimal Connectivity Coding, [Khodakovsky, Alliez, Desbrun, Schröder, 02] . . . 7. . . 4 3 3 6 4 4 4 7 5 4 6 6 4 4 4 5 6 6 4 4 6. . . 4. . . compressed with arithmetic coder converges to entropy
Entropy for a symbol sequence of t types Entropy = t i =1 1 pi • log 2( ) bits pi pi = 0. 2 bits 1. 3 bits # of type t # total 2. 0 bits
Average Distribution [over a set of 11 polygonal meshes] 4 4 3 3 2 5 6 7 8 9+ vertex degrees 5 6 7 8 9+ face degrees
“Worst-case” Distribution 3 4 5 [Alliez & Desbrun, 01] 6 7 8 3. 241… bpv 9 …… … vertex degrees [Tutte, 62]
Adaptation to Regularity 6 . . . 3 . . . vertex degrees . . . 3 . . . face degrees . . . 6 . . . vertex degrees . . . 4 . . . face degrees . . . 4 . . . vertex degrees . . . face degrees
Degree Coding for Volumes ? tri tet quad hex vertex degrees edge degrees
Regular Volume Meshes? • elements for regular 2 D tiling – regular triangle – regular quadrilateral – regular hexagon • elements for regular 3 D tiling – regular tetrahedron – regular hexahedron
Compressing Connectivity
Space Growing similar in spirit to “region growing”: algorithm maintains hull enclosing processed hexahedra 1. initialize hull with a border face 2. iterate until done • pick incomplete face on hull • process adjacent hexahedra • record degrees of its free edges
Coding with Edge Degrees focus face
Coding with Edge Degrees focus face
Coding with Edge Degrees slots focus face
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees incomplete faces border faces
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees edges on hull maintain slot count
Coding with Edge Degrees edges with a slot count of zero are “zero slots” zero slots
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Coding with Edge Degrees
Resulting Symbols – border edge degrees. . . 2 3 3 3 4 3 . . . – interior edge degrees. . . 4 5 4 4 3 4 . . . – border ? . . . N N N Y N N N N N. . . – join ? . . . N N N N Y N N N. . .
Average Distributions 3 2 no 4 4 5 6+ 2 3 5 6 7+ border degrees interior degrees yes no yes border? join?
Possible Configurations
Possible Configurations hut step bridge roof corner tunnel gap pit den
Configuration: “hut” free vertex free face free edge hut not a zero slot zero-slots: 0 free faces free edges free vertices 5 8 4
Configuration: “step” step 0 this is a zero slot zero-slots: 1 free faces free edges free vertices 4 5 2
Configuration: “bridge” 0 bridge 0 zero-slots: 2 free faces free edges free vertices 3 2 --
“hut” or “roof” “join” operation hut ? for the free face of “hut” that potentially forms a roof: “join? ” roof Y / N
other “join” operations • free vertex already on hull • free edge already on hull hut for every free vertex / edge: “join? ” step Y / N
Adaptive traversal to avoid “join”operations
Reason for “join” operations hull
Reason for “join” operations hull
Reason for “join” operations hull
Reason for “join” operations hull
Reason for “join” operations unprocessed region hull processed region
Reason for “join” operations unprocessed region hull processed region
Reason for “join” operations unprocessed region hull processed region
Reason for “join” operations unprocessed region hull processed region
Reason for “join” operations unprocessed region join hull processed region
Adaptive Traversal • Valence-driven connectivity encoding for 3 D meshes [Alliez & Desbrun, 01] avoid creation of cavities pick face with largest # of zero slots focus face
Propagating the border information
Explaining Example border face & slot count = 1 border face
Explaining Example border face border edges
Explaining Example interior edges incomplete faces
Explaining Example remaining elements for everything else: “border? ” Y / N
Results (Connectivity) model hanger ra bump … warped hutch c 1 bits per hexahedron (bph) raw compressed 5. 3 2. 9 2. 1 72. 0 80. 0 88. 0 … … 112. 0 136. 0 0. 2 0. 3 0. 6 ratio 1 : 14 1 : 28 1 : 42. . . 1 : 621 1 : 361 1 : 226 average compression ratio = 1 : 163
Results (Connectivity) model hanger ra bump … warped hutch c 1 bits per hexahedron (bph) raw compressed 5. 3 2. 9 2. 1 72. 0 80. 0 88. 0 … … 112. 0 136. 0 0. 2 0. 3 0. 6 ratio 1 : 14 1 : 28 1 : 42. . . 1 : 621 1 : 361 1 : 226 average compression ratio = 1 : 163
Compressing Geometry
Predictive Compression 1. quantize positions with b bits floating point (1. 2045, -0. 2045, 0. 7045) integer (1008, 67, 718)
Predictive Compression 1. quantize positions with b bits floating point (1. 2045, -0. 2045, 0. 7045) 2. traverse positions integer (1008, 67, 718)
Predictive Compression 1. quantize positions with b bits floating point (1. 2045, -0. 2045, 0. 7045) integer (1008, 67, 718) 2. traverse positions 3. predict position from neighbors prediction (1004, 71, 723)
Predictive Compression 1. quantize positions with b bits floating point (1. 2045, -0. 2045, 0. 7045) integer (1008, 67, 718) 2. traverse positions 3. predict position from neighbors 4. store corrective vector prediction (1004, 71, 723) corrector (4, -3, -5)
Parallelogram Rule Triangle Mesh Compression, [Touma & Gotsman, 98] across “non-convex” triangles across “non-planar” triangles within “planar” & “convex” quadrilateral
Position Predictions 2 3 vertex v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 1 0 6 init prediction rule 0 v 1 v 0 - v 1 + v 2 2 v 0 – v 8 (or v 0 ) v 1 – v 0 + v 4 v 2 – v 1 + v 5 v 3 – v 2 + v 6 7 5 4 2 3 1 0 8 hut
Results (Geometry) model hanger ra bump … warped hutch c 1 bits per vertex (bpv) raw compressed 23. 2 30. 8 24. 4 48. 0 … … 48. 0 10. 5 19. 9 5. 9 ratio 1 : 2. 1 1 : 1. 6 1 : 2. 0. . . 1 : 4. 6 1 : 2. 4 1 : 8. 1 average compression ratio = 1 : 3. 7
Demo
Summary • degree coding for volume mesh connectivity – edge degrees – boundary propagation – adaptive traversal • parallelogram prediction for volume mesh geometry – “within” predictions
Current / Future Work • Mixed Volume Meshes – hex + tet + prism + pyramid cells • Universal Connectivity Coder – – – face, vertex, and edge degrees tri / quad / poly surfaces tet / hex / poly volumes surface mesh = cell of volume mesh bit-rate like specialized coder
Acknowledgements data sets • • Alla Sheffer Steven Owen Scott Mitchell Claudio Silva financial support • ARC TéléGéo grant from INRIA
Thank You!
Old Beijing & Duck Whoever had expressed interest in going to eat duck in the ancient-style “hutong” area: meet me 10 -15 minutes after end of PG in front of hotel bring : • map • address card of your hotel • ~100 yuan (smaller bills for subway / bus)
Configurations: “roof” roof zero-slots: 0 adjacent faces: 1 free faces free edges free vertices 4 4 --
Configurations: “tunnel” 0 0 tunnel zero-slots: 2 adjacent faces: 4 free faces free edges free vertices 2 ---
Configuration: “corner” 0 0 corner 0 zero-slots: 2 adjacent faces: 3 free faces free edges free vertices 3 3 1
Configuration: “gap” 0 0 gap 0 zero-slots: 3 adjacent faces: 4 free faces free edges free vertices 2 1 --
Configurations: “pit” 0 0 0 pit 0 0 0 zero-slots: 4 adjacent faces: 5 free faces free edges free vertices 1 ---
Configurations: “den” 0 0 0 den 0 zero-slots: 4 adjacent faces: 6 free faces free edges free vertices ----
- Slides: 96