1 / 51

Out-of-Core Compression for Gigantic Polygon Meshes

Out-of-Core Compression for Gigantic Polygon Meshes. Martin Isenburg Stefan Gumhold University of North Carolina WSI/GRIS at Chapel Hill Universität Tübingen. Gigantic Meshes. 3D scans. CAD models. isosurfaces. Gigantic Meshes. 3D scans. CAD models. isosurfaces. Gigantic Meshes.

tyson
Télécharger la présentation

Out-of-Core Compression for Gigantic Polygon Meshes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Out-of-CoreCompression for Gigantic Polygon Meshes Martin Isenburg Stefan Gumhold University of North Carolina WSI/GRIS at Chapel Hill Universität Tübingen

  2. Gigantic Meshes 3D scans CAD models isosurfaces

  3. Gigantic Meshes 3D scans CAD models isosurfaces

  4. Gigantic Meshes 3D scans CAD models isosurfaces

  5. cut into 12 pieces St. Matthew Statue slows down: • transmission • storage • loading • processing 186 million vertices 372 million triangles over 6 Gigabyte

  6. cut mesh into pieces, compress separately, stitch back together “Compressing Large Polygonal Models” [Ho et al. ‘01] Mesh Compression • active research area since ‘95 • many efficient schemes, but ... • mesh has to fit into memory • 2/4 GB limit on common PCs “Geometry Compression” [Deering ‘95]

  7. eliminates number of schemes “Topological Surgery” [Taubin & Rossignac ‘98] “Edgebreaker” [Rossignac ‘99] “Face Fixer” [Isenburg & Snoeyink ‘00] Mesh De-Compression • use 64-bit super computer • but decompress on desktop PC • single pass • small memory foot-print   

  8. Contributions

  9. Contributions • Compressor • minimal access

  10. Contributions • Compressor • minimal access • Out-of-CoreMesh • transparent • caching clusters

  11. Contributions • Compressor • minimal access • Out-of-CoreMesh • 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. Related Work • Large Mesh Processing • Simplification • Visualization (Multi-Resolution) • Compression • Main Out-of-Core Techniques 1. Mesh Cutting 2. Batch Processing 3. Online Processing

  15. [Hoppe 97] Simplification  Visualization [Bernadinietal.99]  Compression [Ho et al. 01] 1. Mesh Cutting • cut mesh into smaller pieces • process each piece separately • give special treatment to cuts • stitch result back together

  16. Ho et al. • cut/compress pieces/stitch “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.  Simplification [Lindstrom 00]  Visualization [Lindstrom 03] + external sorting 2. Batch Processing • work on “polygon soup” • process mesh in increments of single triangles • make no use of connectivity

  18.  Simplification [Cignoni et al. 03]  Compression [this paper] 3. Online Processing • reorganize mesh data into an external memory structure • allow “random” mesh access • full connectivity available

  19. Cignoni et al. “Octree-based External Memory Mesh” [Cignoni et al. ‘03] • motivation: enable use of high quality simplification • use edge-collapse • simplify in one piece • just like “in-core” • clusters do not storeexplicit connectivity figure courtesy of Paolo Cignoni

  20. Out-of-Core Mesh

  21. half-edge based next struct HalfEdge { Index origin; Index inv; Index next; }; origin inv Out-of-Core Mesh (1) • spatial clustering • stored on disk • cachedclusters

  22. functionality • read only • except for flag per edge 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" Out-of-Core Mesh (2) • cluster index + local index • hide clustering • try to fit in32bits struct IndexPair { int ci : 15; int li : 17; };

  23. clustering input computingconnectivity 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  marknon-manifoldvertices

  24. 4 9 5 6 8 1 6 3 7 7 7 7 8 9 7 1 8 7 7 9 7 3 7 2 7 7 7 6 7 7 8 4 7 8 7 8 7 9 9 6 6 9 8 2 2 5 Clustering Input  compute bounding box  create clustering • counter grid • nearest neighbors • graph partitioning  sort vertices into clusters

  25. 4 9 5 6 8 1 6 3 7 7 7 7 8 9 7 1 8 7 7 9 7 3 7 2 7 7 7 6 7 7 8 4 7 8 7 8 7 9 9 6 6 9 8 2 2 5 Clustering Input  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. inv next inv next Computing Connectivity  sort edges into clusters  matchinverse half-edges • border edges • non-manifold edges are cut  link borders  non-manifold vertices

  28. 871 MB 1.7 GB 11.2 GB on-disk size 96 MB 192 MB 384 MB in-core limit 128 MB 19 min 35 min 7 hours build 49 min 14 min 4 hours compression 5 min 11.0 1.3 2.1 cache misses 2.1 Example Timings

  29. Compression Scheme

  30.   Popular Schemes  “Topological Surgery” [Taubin & Rossignac ‘98] “Triangle Mesh Compression” [Touma & Gotsman ‘98] “Triangle Mesh Compression” [Touma & Gotsman ‘98] “Cut-Border Machine” [Gumhold & Strasser ‘98] “Dual Graph Approach” [Li & Kuo ‘98]  “Edgebreaker” [Rossignac ‘99]  “Face Fixer” [Isenburg & Snoeyink ‘00]  “Spectral Compression” [Karni & Gotsman ‘00]  “Angle Analyzer” [Lee, Alliez & Desbrun ‘02]

  31. TriangleMeshCompression

  32. prev next origin edge across Data Structure not yet encoded struct BoundaryEdge { BoundaryEdge* prev; BoundaryEdge* next; Index edge; Index origin_idx; int origin[3]; int across[3]; int slots; bool border; }; already encoded

  33. Holes

  34. Non-Manifold Vertices

  35. Parallelogram Prediction

  36. 23 bit ofprecision 23 bit ofprecision 23 bit ofprecision Quantization • precision of 32-bit float? • largestexponentleastprecise 0 4 8 16 32 64 128 x - axis -4.095 190.974

  37. 327 1311 20cm 97 388 2.7 m 1553 5 86 22 195 m Samples per Millimeter 16 bit 18 bit 20 bit 22 bit 24 bit

  38. 508 MB 1 GB 6.7 GB original 37 MB 61 MB 344 MB compressed 15 sec 27 sec 174 sec load-time 1.5 MB 2.8 MB 9.4 MB foot-print Results

  39. original compressed load-time foot-print 285 MB 28 MB 1 MB 9 sec 1.8 GB 180 MB 63 sec 1 MB Results power plant double eagle

  40. Processing Sequences

  41. 2 GB 4 GB Mesh Formats • indexed meshes • bad for large data sets • polygon soup • efficientprocessing • no connectivity • external memory mesh • seamless connectivity • slow to build & use

  42. Processing Sequences seamless connectivity during fixed traversal

  43. Large Mesh Simplification processed region bufferedregion original method output boundary input boundary unprocessed region using processing sequences “Large Mesh Simplification using Processing Sequences”[Isenburg, Lindstrom, Gumhold, Snoeyink Visualization ‘03]

  44. Conclusion

  45. Summary • Compressor • minimal access • Out-of-CoreMesh • transparent • caching clusters • Compact Format • small footprint • streaming

  46. Issues • lengthofcompressionboundary • possible • but we use only local heuristics • may require too many clusters • causes thrashing O(n) [Bar-Yehuda & Gotsman ‘96] • external memory mesh • expensive to build & use • avoid using it?

  47. Current Work

  48. streaming small memory footprint   Small Footprint Streaming • vertices & triangles interleaved • knowledge when vertex is nolonger needed • concept: “Streaming Meshes”

  49. vertices finalized(not used bysubsequenttriangles) Streaming Meshes • interleave vertices & triangles • “finalize” vertices v 1.32 0.12 0.23v 1.43 0.23 0.92v 0.91 0.15 0.62f 1 2 3done 2 v 0.72 0.34 0.35f 4 1 3done 1 ⋮ ⋮ ⋮ ⋮

  50. out-of-coremesh compressedstreamingmesh streamingmesh compressedstreamingmesh some kindofprocessing compressedstreamingmesh Streaming Compression application indexedmesh

More Related