Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
A Multiresolution Point Rendering System for Large Meshes Szymon Rusinkiewicz & Marc Levoy Stanford University Edited by Ingrid Introduction • Trend in computer graphics towards using sampled representations of real objects during rendering • Size of data meshes that can be scanned is on the order of hundreds of millions of points • Scanned data has a large number of verticies whose locations are often imprecise due to noise •Introduction • Evidenced by increased use of 3D scanners to produce three dimensional sampled models of objects • This is FAR beyond what is currently displayable in real time • Suggests an approach where individual points are relatively unimportant Introduction • Examples of recent research employing this paradigm – Spline-fitting system by Krishnamurthy and Levoy – Range image merging system by Curless and Levoy – Octree particle rendering system by Yemez and Schmitt • These algorithms do not preserve the original locations of the scanned points What is QSplat? • System for representing and progressively displaying large scale meshes of scanned data • Combines a multi resolution hierarchy based on bounding spheres with a rendering system based on points • Does not preserve the connectivity of the original mesh • Intended to visualize scanned models that contain significant amounts of fine detail at scales near the scanning resolution System Outline • Preprocessing Algorithm – generates hierarchy from triangular mesh • Data Structure – bounding spheres • Node Structure – sphere center, radius, normal, width of a normal cone, (optionally) a color • Rendering Algorithm – visibility culling & drawing a splat Preprocessing Algorithm if (begin == end) return Sphere(verticies[begin]) else midpoint = PartitionLongestAxis(verticies[begin..end]) leftstree = BuildTree(verticies[begin..midpoint]) rightstree = BuildTree(verticies[midpoint+1..end]) return BoundingSphere(leftsubtree, rightsubtree) Recurse down each subtree, finding its bounding box Bounding Box of vertices Preprocessing Algorithm • Position and size of each bounding sphere is encoded relative to its parent and quantisized to 13 values to save space • Quantisized down the mesh, so errors do not propagate • Round up to ensure no holes introduced by quantization Creating the Data Structure • Start with a triangle mesh produced by aligning and integrating scans [Curless 96] Creating the Data Structure • Place a sphere at each node, large enough to touch neighbor spheres Creating the Data Structure • Build up hierarchy QSplat Data Structure • A single bounding sphere hierarchy used for – Hierarchical frustum and backface culling – Level of detail control – Splat rendering [Westover 89] QSplat Node Structure Position and Radius Tree Structure 13 bits 3 bits Normal Width of Cone of Normals Color (Optional) 14 bits 2 bits 16 bits 6 bytes QSplat Node Structure Position and Radius Tree Structure 13 bits 3 bits Normal Width of Cone of Normals Color (Optional) 14 bits 2 bits 16 bits • Position and radius encoded relative to parent node Center Offset – Hierarchical coding vs. delta coding along a path for vertex positions Radius Ratio QSplat Node Structure Position and Radius Tree Structure 13 bits 3 bits Uncompressed Normal Width of Cone of Normals Color (Optional) 14 bits 2 bits 16 bits QSplat Node Structure Position and Radius Tree Structure 13 bits 3 bits Delta Coding [Deering 96] Normal Width of Cone of Normals Color (Optional) 14 bits 2 bits 16 bits QSplat Node Structure Position and Radius Tree Structure 13 bits 3 bits Hierarchical Coding Normal Width of Cone of Normals Color (Optional) 14 bits 2 bits 16 bits QSplat Node Structure Position and Radius Tree Structure 13 bits 3 bits Normal Width of Cone of Normals Color (Optional) 14 bits 2 bits 16 bits • Number of children (0, 2, 3, or 4) – 2 bits • Presence of grandchildren – 1 bit QSplat Node Structure Position and Radius Tree Structure 13 bits 3 bits Normal Width of Cone of Normals Color (Optional) 14 bits 2 bits 16 bits • Normal quantized to grid on faces of a cube 52526 QSplat Node Structure Position and Radius Tree Structure 13 bits 3 bits Normal Width of Cone of Normals Color (Optional) 14 bits 2 bits 16 bits • Each node contains bounding cone of children’s normals • Hierarchical backface culling [Kumar 96] QSplat Node Structure Position and Radius Tree Structure 13 bits 3 bits Normal Width of Cone of Normals Color (Optional) 14 bits 2 bits 16 bits Viewer Culled Not Culled QSplat Node Structure Position and Radius Tree Structure 13 bits 3 bits Normal Width of Cone of Normals Color (Optional) 14 bits 2 bits 16 bits • Per-vertex color is quantized 5-6-5 (R-G-B) QSplat Rendering Algorithm Hierarchical frustum / backface culling if (node not visible) Skip this branch Point rendering else if (leaf node) Level of detail control Draw a splat else if (size on screen < threshold) Draw a splat else Traverse children Adjusted to maintain desired frame rate Rendering Algorithm • Visibility Culling – As recurse bounding spheres, cull nodes not visible – Backface culling • if cone faces away, discard node & subtree • If cone faces viewer, mark node no culling • Frustum culling is performed by testing each sphere against planes of the view frustum – discard nodes and subtrees that are outside the view frustum Rendering Algorithm • Determining when to recurse – Based on projected size of screen – Node is subdivided if area of sphere when projected on viewing plane exceeds a threshold – Adjusted frame to frame to maintain user selected frame rate • Type of data does not require smoothing or complex frame rate adjustment Frame Rate Control • Feedback-driven frame rate control – During motion: adjust recursion threshold based on time to render previous frame – On mouse up: redraw with progressively smaller thresholds – Consequence: frame rate may vary • Alternative: – Predictive control of detail [Funkhouser 93] Tradeoffs of Splatting • For rendering large 3D models, what are the tradeoffs of: Polygons QSplat Good for large, flat or subtly curved regions Good for models with detail everywhere Highly-efficient rasterization with 3D graphics hardware Higher per-pixel cost, but less slowdown in absence of 3D hardware Decimation or creating LOD data structures is often expensive Fast preprocessing Demo – St. Matthew • 3D scan of 2.7 meter statue at 0.25 mm • 102,868,637 points • File size: 644 MB • Preprocessing time: 1 hour • Demo on laptop (PII 366, 128 MB), no 3D graphics hardware Future Work • Splats as primitive – Unify rendering of meshes, volumes, point clouds – Compatible with shading after rasterization – Hybrid point/polygon systems • High-level visibility / LOD frameworks – Store different kinds of data at each node: alpha, BRDF, scattering function, etc. – Potentially could be used to unify imagebased-rendering (IBR) techniques Acknowledgments • Thanks to Gary King, Dave Koller, Jonathan Shade, Matt Ginzton, Kari Pulli, Lucas Pereira, James Davis, and the whole DMich gang • Digital Michelangelo Project sponsored by Stanford University, Interval Research Corporation, and the Paul Allen Foundation for the Arts QSplat Downloads • QSplat binaries and source code http://graphics.stanford.edu/software/qsplat • Digital Michelangelo Project archive at http://graphics.stanford.edu/projects/mich