1.06k likes | 1.26k Views
Large Mesh Simplification using Processing Sequences. Martin Isenburg UNC Chapel Hill. Peter Lindstrom LLNL Livermore. Stefan Gumhold GRIS Tubingen. Jack Snoeyink UNC Chapel Hill. Overview. Motivation Background Processing Sequences Adapted Simplification Schemes OOCS Wu & Kobbelt
E N D
Large Mesh Simplificationusing Processing Sequences Martin Isenburg UNCChapel Hill Peter Lindstrom LLNLLivermore Stefan Gumhold GRISTubingen Jack Snoeyink UNCChapel Hill
Overview • Motivation • Background • Processing Sequences • Adapted Simplification Schemes • OOCS • Wu & Kobbelt • Conclusion
Large Meshes 3D scans isosurfaces
Large Meshes 3D scans isosurfaces
hampers: • distributing / loading • rendering • processing PPM isosurface • 235 million rtices • million triangles • 235 million vertices • 469 million triangles over8 Gigabyte !
current out-of-core approaches: 1. piece by piece 2. external memory 3. polygon soup [Hoppe ’98] [Cignoni et al. ’03] [Lindstrom ’00] • alternative: processing sequence Mesh Simplification • in-core algorithms of choice: • Qslim • Rsimp [Garland & Heckbert ’97] require ~200 bytesper vertex [Brodsky & Watson ’00]
Related Work • Large Mesh Processing • Simplification • Compression • Visualization Systems • Main Techniques 1. Mesh Cutting 2. Online Processing 3. Batch Processing
figure courtesy of Hugues Hoppe 1. Mesh Cutting • cut mesh into small pieces • process each separately • special treatment for cuts • stitch result back together
figure courtesy of Paolo Cignoni 2. Online Processing • external memory datastructures • “random” mesh access
[Lindstrom ’00] 3. Batch Processing (1) • polygon soup • single scan over stream ofde-referenced triangles • noexplicitconnectivity
[Wu & Kobbelt ’03] figure courtesy of Jianhua Wu and Leif Kobbelt 3. Batch Processing (2) • polygon soup • single scan over stream ofde-referenced triangles • noexplicitconnectivity (coherent) reconstruct
[Isenburg & Gumhold ’03] Sequenced Processing • coherent triangle orderinginterleaved with vertices • small footprint streaming • finalization of vertices
Quadric Error Matrices • accumulate error • vertex placement • sum of squareddistances of point to set of planes • quadric error: q00 q01 q02 q03 q10q11 q12 q13 q20 q21q22 q23 q30 q31 q32q33 Q = figure courtesy of Michael Garland [Garland & Heckbert ’97] vTQv
A little history … • Compressor • region growing
A little history … • Compressor • region growing • Out-of-CoreMesh • transparent • caching clusters
A little history … • Compressor • region growing • Out-of-CoreMesh • transparent • caching clusters • Compact Format • small footprint • streaming
A little history … • Compressor • region growing • Out-of-CoreMesh • transparent • caching clusters • Compact Format • small footprint • streaming
A little history … • Compressor • region growing • Out-of-CoreMesh • transparent • caching clusters • Compact Format • small footprint • streaming
processingboundary Q7 Q1 Q4 borderedges Processing Sequences • interleaved ordering of triangles and vertices that “grows regions” • available information: • first & last use of edges & vertices • surface border • maintaindata alongboundary
processed region waiting area processingboundary unprocessed region Abstractions • boundary-based • one boundary • process immediately
processed region processed region processingboundary in-corebuffer output boundary input boundary unprocessed region unprocessed region Abstractions waiting area • boundary-based • one boundary • process immediately • buffer-based • two boundaries • process in buffer • read to fill • write to empty
OOCS • stream in polygon soup • triangle after triangle • vertex clustering • one quadric per grid cell • output sensitive • store all quadrics • no border info • tangential term added
Q Q OOCS output input
Q Q OOCS output input Q Q
Q Q OOCS output input Q Q
Q Q Q Q Q OOCS output input Q Q
OOCS output input Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q
OOCS output input Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q
OOCS output input Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q
OOCS output input Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q
OOCS output input Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q
OOCS using PS • fewer artifacts • do not collapse multiple layers into single vertex • improved surface boundaries • memory insensitive • maintain much fewer quadrics • streaming output
Q7 7 5 Q5 5 5 Q3 3 4 4 Q4 OOCS using PS (detail) unprocessedregion processedregion
OOCS using PS (detail) Q7 unprocessedregion processedregion 7 5 Q5 5 Q3 3 4 4 Q4
quadric turns into vertex OOCS using PS (detail) Q7 unprocessedregion processedregion 7 5 Q5 5 Q3 4 4 Q4
Q8 8 OOCS using PS (detail) Q7 unprocessedregion processedregion 7 5 Q5 5 4 4 Q4
Q8 8 OOCS using PS (detail) Q7 unprocessedregion processedregion 7 5 Q5 5 4 Q4
Q8 8 quadric turns into vertex OOCS using PS (detail) Q7 unprocessedregion processedregion 7 5 Q5 5 8 Q4
Q9 9 Q8 8 OOCS using PS (detail) Q7 unprocessedregion processedregion 7 5 Q5 5 8
Q9 9 Q8 quadricmerge 8 OOCS using PS (detail) Q7 unprocessedregion processedregion 7 5 Q5 8
Q Q OOCS using PS output input
OOCS using PS output input Q Q Q Q
OOCS using PS output input Q Q Q Q Q Q Q Q
OOCS using PS output input Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q
OOCS using PS output input Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q