1 / 46

Streaming Compression of Triangle Meshes

Streaming Compression of Triangle Meshes. Martin Isenburg University of California at Berkeley. Peter Lindstrom Lawrence Livermore National Labs. Jack Snoeyink University of North Carolina at Chapel Hill. Compression. digital text, programs … images voice, music movies. JPG. GIF.

kirkan
Download Presentation

Streaming Compression of Triangle 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. Streaming Compressionof Triangle Meshes Martin Isenburg University of Californiaat Berkeley Peter Lindstrom Lawrence LivermoreNational Labs Jack Snoeyink University of North Carolina at Chapel Hill

  2. Compression

  3. digital • text, programs… • images • voice, music • movies JPG GIF Compression • physical • sleeping bags • compressed air

  4. main memory Maximum Compression • Connectivity • Geometry • Properties storage / network Mesh Compression “Geometry Compression” [Deering, 95] • Efficient Rendering • Progressive Transmission • Maximum Compression

  5. Current Schemes “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] “Degree Duality Coder”[Isenburg ‘02] “Out-of-Core Compression”[Isenburg & Gumhold ‘03] “FreeLence”[Kälberer et al. ‘05]

  6. Current Approach

  7. Current Approach

  8. Underlying Assumption • original ordering of vertices and triangles is not important • no need to preserve it • compressor is allowed to re-order • impose “canonical” ordering • only encode connectivity graph • re-order mesh based on some deterministic traversal

  9. Original Orderings rendering the first 20to 40 percent of thetriangle array

  10. Auxiliary Data Structures getNext(h_edge); getInv(h_edge);getOrigin(h_edge); isBorder(h_edge);isEncoded(h_edge); markAsEncoded(h_edge); beforecompression starts inv flags 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 createdata structure for queryingand marking connectivity 1 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 1 Connectivity Traversal Entire Mesh As Input vertices triangles

  11. Large Meshes 3D scans isosurfaces

  12. Large Meshes 3D scans isosurfaces

  13. cut mesh into pieces, compress separately, stitch back together “Compressing Large Polygonal Models” [Ho et al. ‘01] • use an external memory structure “Out-of-core Compression of Gigantic Polygon Meshes”[Isenburg and Gumhold. ‘03] Limited Main Memory • impossible to construct / store data structures for mesh traversal

  14. Out-of-Core Compression • OoC-Mesh • on-disk clustering • construct in advance • cache LRU clusters • OoC-Compressor • make few queries

  15. Out-of-Core Compression • OoC-Mesh • on-disk clustering • construct in advance • cache LRU clusters • OoC-Compressor • make few queries • Decompression • “streaming”

  16. Streaming

  17. digital • streaming formats • audio • video Streaming • physical • water in a pipe • drip coffee • triangle meshes

  18. non-progressive    Two Types of Streaming • progressive   

  19. small window Non-Progressive Streaming • consume immediately • potentially without end • keep small buffer • delete data if no longer needed

  20. not used byprecedingtriangles vertex # 2 introduced active not used bysubsequenttriangles vertex # 2 finalized number of active vertices “width” Streaming Mesh Formats interleave introducefinalize “Streaming Meshes”[Isenburg and Lindstrom ‘05] 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 v 0.72 1.03 0.35 ⋮ ⋮ ⋮ ⋮

  21. Outputting StreamingMeshes • isosurface • 235 million vertices • 469 million triangles over8 Gigabyte • marching cubes • extract layer by layer • output elements as extracted • finalize vertices of previous layer Richtmeyer-Meshkov instability simulation at LLNL

  22. Streaming Simplification “Stream Algorithm for … ”[Wu & Kobbelt ‘03] “Large Mesh Simplification …”[Isenburg et al. ‘03]

  23. Streaming Compression

  24. compare to standard API • bool compress(FILE* file, int bits,int num_pos,float* positions,int num_tri,int* indices); Streaming Compression (1) • streaming API • bool open(FILE* file, int bits); • bool write_vertex(float* position);bool write_triangle(int* index, bool* finalize); • bool close();

  25. Streaming Compression (2) • when writing a vertex • insert in hash • when writing a triangle • look-up activevertices • determine configuration • compress triangle • positions of new vertices • remove finalized data structures

  26. Possible Configurations written triangle start add fill start1 end join active elements

  27. add fill fill Compressing a Triangle • configuration • specify active vertex • log2(width) bits • better: use cache add • specify other active vertices • use local edge lists • position of new vertices • parallelogram prediction • finalization flags

  28. Demo • compress triangles immediately • use delay buffer

  29. Greedy Local Reordering Improving connectivity compression by reordering triangles in a delay buffer 18 lucy 16 14 (original) 12 (spectral) 10 (geometric) bpv 8 (breadth) 6 4 (depth) 2 st. matthew 0 (original) 25 50 1K 5K 100 250 500 10K 50K (spectral) none (geometric) delay buffer size

  30. streaming 392 MB 7 hours --- pre-process 11.2 GB --- disk space 384 MB 12 MB main memory 4 hours 28 min compress out-of-core 344 MB compressed (coordinates uniformly quantized to 18 bits)

  31. Example Processing Pipeline

  32. P1 P2 P3 • pipelined stream-processing P1 P2 P3 P1 P2 P3 P1 P2 P3 Pipelined Stream-Processing • conventional processing • super-linear speedup • minimal end-to-end I/O delay • optimal disk caching

  33. Demo Pipeline regular volume grid 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 ⋮ ⋮ ⋮ ⋮ 256 256 256 smextract | smclean | smsimp | smcompress P1 P4 P2 P3 grid.raw mesh.smc

  34. Conclusion

  35. Current Schemes do not Scale 9 GB 1 MB

  36. Problems of Current Schemes entire mesh as input IO-inefficient for large data 186 million vertices(2 GB) dedicated out-of-core data structure(11 GB) global reordering ofmesh duringcompression 372 milliontriangles(4 GB)

  37. Streaming Approach • bool open(FILE* file, int bits); • bool write_vertex(float* position);bool write_triangle(int* index, bool* finalize); • bool close();

  38. streaming 392 MB 7 hours --- pre-process 11.2 GB --- disk space 384 MB 12 MB main memory 4 hours 28 min compress out-of-core 344 MB compressed (coordinates uniformly quantized to 18 bits)

  39. Alternate Approaches • different re-ordering strategy • higher correlation • deterministic growing strategy • let compressor choose & correct • degree-based coding • need to relax “max delay” constraint • geometry • local coordinate system, angles, … • connectivity

  40. Compressing Volume Meshes standard streaming 2.14 bpt 3.88 bpt rate torso 7 min 8 sec time memory 3 MB 115 MB 1.81 bpt 3.56 bpt rate fighter 11 min 12 sec time memory 6 MB 140 MB

  41. Current/Future Work • implement more stream modules • streaming surface reconstruction • streaming stripification • streaming re-meshing • streaming smoothing • streaming segmentation • streaming feature extraction • streaming …

  42. Acknowledgements • meshes • Stanford University, Cyberware • support • NSF grant 0429901 "Collaborative Research: Fundamentalsand Algorithms for Streaming Meshes." • U.S. DOE / LLNL # W-7405-Eng-48 • Max Planck Institute für Informatik

  43. Thank You streaming compression API :http://www.cs.unc.edu/~isenburg/smc

  44. Stream-Processing Modules • tasks that process mesh elements one at a time • e.g. for each triangle t … • tasks that only require access to local neighbors • e.g. for each triangle t of vertex v … • tasks that are order independent • e.g. collapse edges shorter than 

  45. 2832! • 2834! • 4 differentorderings = 1.6E+18810 possible descriptions 2834 4 rotations 2834 # triceratops.obj## 2832 vertices# 2834 polygons#v 3.661 0.002 -0.738v 3.719 0.347 -0.833v 3.977 0.311 -0.725v 4.077 0.139 -0.654⋮ ⋮ ⋮ ⋮f 2806 2810 2815 2821f 2797 2801 2811 2805f 2789 2793 2802 2796f 2783 2794 2788⋮ ⋮ ⋮ ⋮ 2832! permutations 2806 2834! permutations

More Related