Presentation is loading. Please wait.

Presentation is loading. Please wait.

Streaming Compression of Triangle Meshes Martin Isenburg University of California at Berkeley Jack Snoeyink University of North Carolina at Chapel Hill.

Similar presentations


Presentation on theme: "Streaming Compression of Triangle Meshes Martin Isenburg University of California at Berkeley Jack Snoeyink University of North Carolina at Chapel Hill."— Presentation transcript:

1 Streaming Compression of Triangle Meshes Martin Isenburg University of California at Berkeley Jack Snoeyink University of North Carolina at Chapel Hill Peter Lindstrom Lawrence Livermore National Labs

2 Compression

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

4 – Efficient Rendering – Progressive Transmission – Maximum Compression Connectivity Geometry Properties Mesh Compression “Geometry Compression” [ Deering, 95 ] storage / network main memory 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 ] “Degree Duality Coder” [ Isenburg ‘02 ] “Angle Analyzer” [ Lee, Alliez & Desbrun ‘02 ] “FreeLence” [ Kälberer et al. ‘05 ] “Out-of-Core Compression” [ Isenburg & Gumhold ‘03 ]

6 Current Approach

7

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 20 to 40 percent of the triangle array

10 Connectivity Traversal Entire Mesh As Input triangles vertices before compression starts create data structure for querying and marking connectivity

11 Large Meshes 3D scansisosurfaces

12 Large Meshes 3D scansisosurfaces

13 Limited Main Memory “Compressing Large Polygonal Models” [ Ho et al. ‘01 ] cut mesh into pieces, compress separately, stitch back together “Out-of-core Compression of Gigantic Polygon Meshes” [ Isenburg and Gumhold. ‘03 ] use an external memory structure 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 physical – water in a pipe – drip coffee digital – streaming formats audio video triangle meshes

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

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

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

21 Outputting Streaming Meshes isosurface – 235 million vertices – 469 million triangles over 8 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 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(); compare to standard API bool compress(FILE* file, int bits, int num_pos, float* positions, int num_tri, int* indices);

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

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

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

28 Demo compress triangles immediately use delay buffer

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

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

31 Example Processing Pipeline

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

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

34 Conclusion

35 Current Schemes do not Scale 9 GB 1 MB

36 Problems of Current Schemes 372 million triangles ( 4 GB ) 186 million vertices ( 2 GB ) dedicated out-of-core data structure ( 11 GB ) global reordering of mesh during compression entire mesh as inputIO-inefficient for large data

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

38 out-of-core compressed 344 MB pre-process 7 hours 4 hours compress main memory 384 MB disk space 11.2 GB streaming --- 28 min --- 12 MB 392 MB (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 standardstreaming torso fighter 2.14 bpt3.88 bpt rate time 7 min 115 MB 8 sec 3 MB memory 1.81 bpt3.56 bpt rate time 11 min 140 MB 12 sec 6 MB memory

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: Fundamentals and 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

45 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 

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


Download ppt "Streaming Compression of Triangle Meshes Martin Isenburg University of California at Berkeley Jack Snoeyink University of North Carolina at Chapel Hill."

Similar presentations


Ads by Google