540 likes | 572 Views
Streaming Meshes. Peter Lindstrom LLNL. Martin Isenburg UC Berkeley. Indexed Formats.
E N D
Streaming Meshes Peter Lindstrom LLNL Martin IsenburgUC Berkeley
# 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⋮ ⋮ ⋮ ⋮ 2806
Original Orderings showing the first 20to 40 percent of thetriangle array
Large Meshes 3D scans isosurfaces
Large Meshes 3D scans isosurfaces
Mesh Pieces 6.1 GB Input Problem Indexed Mesh 186 million vertices = 2 GB 372 milliontriangles = 4 GB 6 GB
External Memory Mesh 12 GB Input Problem Indexed Mesh 186 million vertices = 2 GB 372 milliontriangles = 4 GB 6 GB
Triangle Soup 12 GB Input Problem Indexed Mesh 186 million vertices = 2 GB 372 milliontriangles = 4 GB 6 GB
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”
Large Model Distribution “Digital Michelangelo Project” Stanford University “3D Gallery” Visual Computing Lab, ISTI
multi-pass • sort triangle array on each index field • replace index with vertex • large disk space and I/O overhead [Chiang & Silva 1997] Reading Indexed Input • one-pass • memory-map the vertex array • rely on paging system of OS • will “fail” on incoherent input
Indexed 186 million vertices = 2 GB 372 milliontriangles = 4 GB Output Problem Pieces
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
+ finalization !!! pieces external soup streaming formats IO-efficient Format Conversion possibly not IO-efficient standard indexed formats 186 million vertices = 2 GB 372 milliontriangles = 4 GB
digital • streaming formats • audio • video Streaming Formats • physical • water in a pipe • drip coffee • geometry
non-progressive Two Types of Streaming • progressive
small window Non-Progressive Streaming • consume immediately • potentially without end • keep small buffer • delete data if no longer needed
not used byprecedingtriangles vertex # 2 introduced active not used bysubsequenttriangles vertex # 2 finalized Streaming Mesh Formats interleave introducefinalize v 1.32 0.12 0.23v 1.43 0.23 0.92v 0.91 0.15 0.62f 1 2 3finalize 2 v 0.72 0.34 0.35f 4 1 3finalize 1 ⋮ ⋮ ⋮ ⋮
Reading Streaming Formats mesh.open ( “mesh.sma” );while ( event = mesh.read_event() )switch( event ) caseTRIANGLE:// look-up v[0], v[1], v[2] in hashcaseVERTEX:// put new vertex in hashcaseFINALIZE:// remove finalized vertex from hash mesh.close ();
Streaming Mesh Definitions • width • maximal number of active vertices how many vertices need to be buffered • 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
Writing StreamingFormats • 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
Layout Diagram triangles triangle spans vertices vertex spans Coherence in Indexed Meshes Indexed Streaming visualization of the coherence tells us how difficult it is to convert to stream
Layout Diagram: Buddha triangles vertices 20 MB
Layout Diagram: Dragon triangles vertices 20 MB
Layout Diagram: Lucy triangles vertices 508 MB
vertex span 676 MB 338 MB Layout Diagram: St. Matthew triangles vertices 6,760 MB
Topologic and Geometric Sort depth-first breadth-first along one axis z-order
Output Qualities • low width & low span • sweep-line • FIFO (queue) • lowwidth,highspan • block by block • FILO (stack) • highwidth,highspan • random access
Streaming with minimal width • graph theory • minimization is NP hard • heuristic: “spectral sequencing”
processed region in-corebuffer unprocessed region Stream-Processing Model
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
Streaming Simplification “A Stream Algorithm for … ”[Wu & Kobbelt ‘03] “Large Mesh Simplification …”[Isenburg et al. ‘03]
11 hrs construct 12 GB 14 hrs 45 min simplify 80 MB 15 MB Performance compared to: “External Memory Management and Simplification of Huge Meshes” [Cignoni et al. ‘03] Octree-based External Memory Mesh(figure courtesy of Paolo Cignoni)
Streaming Compression “Streaming Compression of Triangle Meshes”[Isenburg, Lindstrom & Snoeyink ‘05]
7 hrs construct 11 GB 4 hrs 28 min compress 384 MB 12 MB 344 MB 392 MB file size Performance compared to: “Out-of-Core Compression of Gigantic Polygon Meshes” [Isenburg & Gumhold ‘03] Out-of-Core Mesh
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
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 3finalized 2 v 0.72 0.34 0.35f 4 1 3finalized 1 ⋮ ⋮ ⋮ ⋮ 256 256 256 smextract | smclean | smsimp | smcompress P1 P4 P2 P3 grid.raw mesh.smc
Indexed Formats do not Scale 9 GB 1 MB
Small Change … Big Benefits Standard Format Streaming Formats
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
Streaming Volume Meshes • format • like surface mesh format • straight-forward • applications • streaming iso-surface extraction • streaming simplification • streaming compression • streaming mesh refinement, …
Volume Mesh Compression compared to: “Tetrahedral Mesh Compression with the Cut-Border Machine”[Gumhold et al. ‘99] torso 662 sec 12 sec compress fighter 140 MB 6 MB 1.81 3.56 bits / tet
Layouts of Volume Meshes torso.off (19 MB) v = 168,930 tet = 1,082,723 (25 MB) v = 256,614 tet = 1,403,504 fighter.off (70 MB) v = 730,273 tet = 3,886,728 rbl.off
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, …