Download presentation
Presentation is loading. Please wait.
1
Martin Isenburg UC Berkeley Streaming Meshes Peter Lindstrom LLNL
2
Indexed Formats
3
# 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 ⋮ ⋮ ⋮ ⋮ 2806
4
Original Orderings showing the first 20 to 40 percent of the triangle array
5
Large Meshes 3D scansisosurfaces
6
Large Meshes 3D scansisosurfaces
7
Mesh Pieces 6.1 GB Input Problem 186 million vertices = 2 GB 372 million triangles = 4 GB Indexed Mesh 6 GB
8
Input Problem 186 million vertices = 2 GB 372 million triangles = 4 GB Indexed Mesh 6 GB External Memory Mesh 12 GB
9
Input Problem 186 million vertices = 2 GB 372 million triangles = 4 GB Indexed Mesh Triangle Soup 12 GB 6 GB
10
Papers from 1997 - 2005 Viz 1997, “I/O Optimal Isosurface Extraction”, Chiang, Silva “unfortunately, data sets are often given in formats that contain indices to vertices” SIGGRAPH 2000, “Out-of-Core Simplification”, Lindstrom “operate on a triangle soup in which each triangle” SIAM 2003, “Adaptive Vertex Clustering”, Schaefer, Warren “we also assume that the mesh is in a triangle soup format” GI 2003, “Decimation of Massive Meshes”, Wu, Kobbelt “in this format (dubbed “triangle soup” in [14]) every triangle” TVCG 2003, “External Memory Mesh”, Cignoni et al. “from a triangle soup (list of faces, not indexed)” SIGGRAPH 2004, “Tetra Puzzles”, Cignoni et al., “we assume […] triangle soup, a flat list of triangles” SIGGRAPH 2005, “Far Voxels”, Gobbetti, Marton “[…] we assume […] represented as a triangle soup”
11
Large Model Distribution “Digital Michelangelo Project” Stanford University “3D Gallery” Visual Computing Lab, ISTI
12
Reading Indexed Input one-pass – memory-map the vertex array – rely on paging system of OS – will “fail” on incoherent input [ Chiang & Silva 1997 ] multi-pass – sort triangle array on each index field – replace index with vertex – large disk space and I/O overhead
13
Output Problem Pieces
14
Writing Indexed Output use computer with lots of memory – Stanford used an SGI Onyx2 output piece by piece – concatenate in final pass memory-map the mesh – number of vertices known a priori ? output into two separate files – concatenate in final pass
15
Format Conversion standard indexed formats streaming formats piecesexternalsoup 372 million triangles = 4 GB 186 million vertices = 2 GB possibly not IO-efficient IO-efficient + finalization !!!
16
Streaming Formats
17
physical – water in a pipe – drip coffee digital – streaming formats audio video geometry
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 finalize 2 v 0.72 0.34 0.35 f 4 1 3 finalize 1 ⋮ ⋮ ⋮ ⋮ vertex # 2 finalized not used by subsequent triangles vertex # 2 introduced not used by preceding triangles active
21
Reading Streaming Formats mesh.open ( “mesh.sma” ) ; while ( event = mesh.read_event() ) switch ( event ) case TRIANGLE: // look-up v[0], v[1], v[2] in hash case VERTEX: // put new vertex in hash case FINALIZE: // remove finalized vertex from hash mesh.close ();
22
span – maximal “time” a vertex stays active how “long” vertices remain in the buffer do not “bloat” width and span !!! – introduce late and finalize early width – maximal number of active vertices how many vertices need to be buffered Streaming Mesh Definitions
23
Writing Streaming Formats 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
24
Layout Diagram triangles vertices Coherence in Indexed Meshes Indexed Streaming visualization of the coherence vertex spans triangle spans tells us how difficult it is to convert to stream
25
Layout Diagram: Buddha triangles vertices 20 MB
26
Layout Diagram: Dragon triangles vertices 20 MB
27
Layout Diagram: Lucy triangles vertices 508 MB
28
Layout Diagram: St. Matthew triangles vertices 6,760 MB 338 MB 676 MB vertex span
29
Visualizing high vertex spans
30
Topologic and Geometric Sort depth-first breadth-first along one axis z-order
31
Output Qualities low width & low span – sweep-line – FIFO (queue) low width, high span – block by block – FILO (stack) high width, high span – random access
32
Streaming with minimal width graph theory – minimization is NP hard – heuristic: “spectral sequencing”
33
Stream-Processing
34
unprocessed region Stream-Processing Model in-core buffer processed region
35
Stream-Processing Tasks 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
36
Streaming Simplification “A Stream Algorithm for … ” [ Wu & Kobbelt ‘03 ] “Large Mesh Simplification …” [ Isenburg et al. ‘03 ]
37
Performance “External Memory Management and Simplification of Huge Meshes” [ Cignoni et al. ‘03 ] 12 GB construct 11 hrs simplify 80 MB 14 hrs Octree-based External Memory Mesh (figure courtesy of Paolo Cignoni) 15 MB 45 min compared to:
38
Streaming Compression “Streaming Compression of Triangle Meshes” [ Isenburg, Lindstrom & Snoeyink ‘05 ]
39
Performance “Out-of-Core Compression of Gigantic Polygon Meshes” [ Isenburg & Gumhold ‘03 ] 11 GB construct 7 hrs compress 384 MB 4 hrs compared to: 12 MB 28 min 344 MB392 MB file size Out-of-Core Mesh
40
Pipelined Streaming
41
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
42
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 finalized 2 v 0.72 0.34 0.35 f 4 1 3 finalized 1 ⋮ ⋮ ⋮ ⋮
43
Conclusion
44
Indexed Formats do not Scale 9 GB 1 MB
45
Small Change … Big Benefits Standard FormatStreaming Formats
46
Current / Future Work more stream modules – streaming re-meshing – streaming smoothing – streaming feature extraction – streaming stripification, … stream other geometry data – volumetric meshes / grids – points in 2D and 3D
47
Streaming Volume Meshes format – like surface mesh format – straight-forward applications – streaming iso-surface extraction – streaming simplification – streaming compression – streaming mesh refinement, …
48
Volume Mesh Compression torso fighter “Tetrahedral Mesh Compression with the Cut-Border Machine” [ Gumhold et al. ‘99 ] 140 MB 662 sec 6 MB 12 sec 1.813.56 compress bits / tet compared to:
49
Layouts of Volume Meshes torso.off v = 168,930tet = 1,082,723 (19 MB) fighter.off v = 256,614tet = 1,403,504 (25 MB) rbl.off v = 730,273tet = 3,886,728 (70 MB)
50
Streaming Points format – need “spatial finalization” e.g. no future points in this “space” applications – streaming surface reconstruction – streaming re-sampling – streaming smooting – streaming compression, …
51
Streaming Delaunay 450 MB 250 sec 4 MB 125 sec 2D Delaunay triangulate 6 million terrain points 2D Delaunay 3D Delaunay
52
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
53
Which models have such layouts? Thank You demo & API : http://www.cs.unc.edu/~isenburg/sm Why? Read the paper!
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.