Download presentation
Presentation is loading. Please wait.
1
Out-of-Core Compression for Gigantic Polygon Meshes Martin IsenburgStefan Gumhold University of North CarolinaWSI/GRIS at Chapel Hill Universität Tübingen
2
Gigantic Meshes 3D scansCAD modelsisosurfaces
3
Gigantic Meshes 3D scansCAD modelsisosurfaces
4
Gigantic Meshes 3D scansCAD modelsisosurfaces
5
St. Matthew Statue slows down: transmission storage loading processing over 6 Gigabyte 186 million vertices 372 million triangles cut into 12 pieces
6
Mesh Compression many efficient schemes, but... – mesh has to fit into memory – 2/4 GB limit on common PCs “Geometry Compression” [ Deering ‘95 ] active research area since ‘95 “Compressing Large Polygonal Models”[ Ho et al. ‘01 ] cut mesh into pieces, compress separately, stitch back together
7
Mesh De-Compression but decompress on desktop PC – single pass – small memory foot-print use 64-bit super computer eliminates number of schemes “Topological Surgery”[ Taubin & Rossignac ‘98 ] “Edgebreaker”[ Rossignac ‘99 ] “Face Fixer”[ Isenburg & Snoeyink ‘00 ]
8
Contributions
9
Compressor – minimal access
10
Contributions Compressor – minimal access Out - of - Core Mesh – transparent – caching clusters
11
Contributions Compressor – minimal access Out - of - Core Mesh – transparent – caching clusters Compact Format – small footprint – streaming
12
Overview Related Work Out-of-Core Mesh Compression Scheme Processing Sequences Conclusion Current Work
13
Related Work
14
Main Out-of-Core Techniques 1.Mesh Cutting 2.Batch Processing 3.Online Processing Related Work Large Mesh Processing – Simplification – Visualization ( Multi-Resolution ) – Compression
15
1. Mesh Cutting cut mesh into smaller pieces process each piece separately give special treatment to cuts stitch result back together Compression [ Ho et al. 01 ] [ Hoppe 97 ] [ Bernadini et al. 99 ] Simplification Visualization
16
cut / compress pieces / stitch Ho et al. “Compressing Large Polygonal Models”[ Ho et al. ‘01 ] artificial discontinuities – special treatment for cuts – compression rates 25 % lower multi-pass decompression – each separately, then stitch – decompression 100 times slower
17
2. Batch Processing work on “polygon soup” process mesh in increments of single triangles make no use of connectivity Simplification [ Lindstrom 00 ] [ Lindstrom 03 ] Visualization + external sorting
18
3. Online Processing reorganize mesh data into an external memory structure allow “random” mesh access full connectivity available [ this paper ] Compression [ Cignoni et al. 03 ] Simplification
19
Cignoni et al. motivation: enable use of high quality simplification – use edge-collapse – simplify in one piece – just like “in-core” figure courtesy of Paolo Cignoni “Octree-based External Memory Mesh” [ Cignoni et al. ‘03 ] clusters do not store explicit connectivity
20
Out-of-Core Mesh
21
struct HalfEdge { Index origin; Index inv; Index next; }; half-edge based Out-of-Core Mesh ( 1 ) next inv origin spatial clustering – stored on disk – cached clusters
22
Out-of-Core Mesh ( 2 ) struct IndexPair { int ci : 15; int li : 17; }; cluster index + local index – hide clustering – try to fit in 32 bits mesh.getNext(edge); mesh.getInv(edge); mesh.getOrigin(edge); mesh.isBorder(edge); mesh.isEncoded(edge); mesh.setIsEncoded(edge); mesh.getPosition(vertex); mesh.isManifold(vertex); "isEncoded" functionality – read only – except for flag per edge
23
Construction geometry passes compute bounding box create clustering sort vertices into clusters connectivity passes sort edges into clusters match inverse half-edges link border edges mark non-manifold vertices clustering input computing connectivity
24
Clustering Input 9 2 6 5 4 9 1 68 6 7 7 7 1 89 7 3 8 7 7 3 7 7 9 6 7 7 7 27 4 87 7 7 8 8 9 7 7 26 5 89 compute bounding box create clustering – counter grid – nearest neighbors – graph partitioning sort vertices into clusters
25
Clustering Input 9 2 6 5 4 9 1 68 6 7 7 7 1 89 7 3 8 7 7 3 7 7 9 6 7 7 7 27 4 87 7 7 8 8 9 7 7 26 5 89 compute bounding box create clustering – counter grid – nearest neighbors – graph partitioning sort vertices into clusters
26
Clustering Input compute bounding box create clustering – counter grid – nearest neighbors – graph partitioning sort vertices into clusters
27
Computing Connectivity sort edges into clusters match inverse half-edges – border edges – non-manifold edges are cut link borders non-manifold vertices next inv
28
Example Timings build 7 hours 35 min19 min 4 hours14 min49 min compression cache misses 2.11.311.0 96 MB in-core limit 192 MB384 MB 871 MB on-disk size 1.7 GB11.2 GB 128 MB 2.1 5 min
29
Compression Scheme
30
Popular Schemes “Topological Surgery”[ Taubin & Rossignac ‘98 ] “Triangle Mesh Compression”[ Touma & Gotsman ‘98 ] “Cut-Border Machine”[ Gumhold & Strasser ‘98 ] “Edgebreaker”[ Rossignac ‘99 ] “Face Fixer”[ Isenburg & Snoeyink ‘00 ] “Angle Analyzer”[ Lee, Alliez & Desbrun ‘02 ] “Dual Graph Approach”[ Li & Kuo ‘98 ] “Spectral Compression”[ Karni & Gotsman ‘00 ] “Triangle Mesh Compression”[ Touma & Gotsman ‘98 ]
31
Triangle Mesh Compression
32
Data Structure prev next across origin edge already encoded not yet encoded struct BoundaryEdge { BoundaryEdge* prev; BoundaryEdge* next; Index edge; Index origin_idx; int origin[3]; int across[3]; int slots; bool border; };
33
Holes
34
Non-Manifold Vertices
35
Parallelogram Prediction
36
Quantization precision of 32-bit float? largest exponent least precise - 4.095 190.974 01286432 x - axis 1684 23 bit of precision
37
Samples per Millimeter 16 bit18 bit 20 bit22 bit24 bit 97388 15532.7 m 3271311 20 cm 5 22 86 195 m
38
Results 508 MB original 1 GB6.7 GB compressed 344 MB 61 MB37 MB174 sec27 sec15 sec load-time foot-print 9.4 MB2.8 MB1.5 MB
39
double eagle power plant Results 1.8 GB 285 MB original 28 MB 180 MB compressed 63 sec 9 sec load-time 1 MB foot-print
40
Processing Sequences
41
polygon soup – efficient processing – no connectivity external memory mesh – seamless connectivity – slow to build & use Mesh Formats indexed meshes – bad for large data sets 2 GB 4 GB
42
Processing Sequences seamless connectivity during fixed traversal
43
Large Mesh Simplification output boundary input boundary buffered region processed region unprocessed region “Large Mesh Simplification using Processing Sequences” [ Isenburg, Lindstrom, Gumhold, Snoeyink Visualization ‘03 ] original method using processing sequences
44
Conclusion
45
Summary Compressor – minimal access Compact Format – small footprint – streaming Out - of - Core Mesh – transparent – caching clusters
46
Issues length of compression boundary – possible – but we use only local heuristics – may require too many clusters – causes thrashing O( n )O( n ) [ Bar-Yehuda & Gotsman ‘96 ] external memory mesh – expensive to build & use – avoid using it ?
47
Current Work
48
Small Footprint Streaming vertices & triangles interleaved streaming small memory footprint concept: “Streaming Meshes” knowledge when vertex is no longer needed
49
Streaming Meshes interleave vertices & triangles “finalize” vertices v 1.32 0.12 0.23 v 1.43 0.23 0.92 v 0.91 0.15 0.62 f 1 2 3 done 2 v 0.72 0.34 0.35 f 4 1 3 done 1 ⋮ ⋮ ⋮ ⋮ vertices finalized ( not used by subsequent triangles )
50
Streaming Compression application indexed mesh out-of-core mesh compressed streaming mesh streaming mesh compressed streaming mesh some kind of processing compressed streaming mesh
51
Thank You. gigantic thanks to Stanford’s Digital Michelangelo project Walkthru group at UNC Newport News Shipbuilding LLNL
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.