170 likes | 189 Views
Explore the use of surface splats and sub-sampling point-clouds for real-time rendering and application to projective displays. Learn about a three-pass GPU algorithm for high-quality splatting.
E N D
Point-based Graphics for Estimated Surfaces Tyler Johnson Department of Computer Science University of North Carolina at Chapel Hill COMP 236 Final Project Presentation – Spring, 2006
Project Motivation • Multi-projector display system • Required for image correction: • projector calibration • display surface representation • viewing location • Surface estimation produces points
Outline • Surface Splats • Sub-sampling point-clouds • Real-time surface splat rendering • Application to projective displays
Surface Splats • Point-based • No connectivity • Circular • center – c ={x,y,z} • normal – n = {x,y,z} • radius - r • Elliptical • replace r with major, minor axes a and b
Sub-sampling Point-clouds • Produce a set of circular surface splats from a set of points • Based on [Wu J., Kobbelt L., “Optimized Sub-sampling of Point Sets for Surface Splatting”]
Sub-sampling Point-clouds • Create initial set of splats • At each point pi • Create new splat si with center pi • Find G = {k nearest neighbors of pi} • Fit least squares plane to find normal of si • Determine r by growing si to include points in G until global error tolerance is reached
Sub-sampling Point-clouds • Greedy selection of splats until model is closed. • Splat selection based on surface area • Model closed when all points covered by a splat
Examples ≈93,000 points sampled from triangle mesh → 41,000 circular surface splats
Examples ≈94,000 points sampled from triangle mesh → 34,000 circular surface splats
Examples Radii decreased to illustrate underlying splat representation.
Rendering Surface Splats • Three-pass algorithm on the GPU • Visibility Pass – Fill depth buffer • Attribute Pass – Splat material properties • Lighting Pass – Normalization and lighting • [Botsch M., Hornung A., Zwicker M., Kobbelt L., “High-Quality Surface Splatting on Today’s GPUs”]
Visibility Pass • Send all splats down the pipeline as points • Fill depth buffer • vertex program • calc splat size in screen-space, generate fragments • fp • invert viewport transform → point on near plane pn • use pn to reconstruct 3D point on splat surface in eye space pe • if pe is within radius of splat, output transformed depth of pe
Attribute Pass • Send all splats down the pipeline again • Splat material properties • vp • calc splat size in screen-space, generate fragments • fp • reconstruct pe on the surface of the splat as in visibility pass • weight normal and color of splat with kernel at splat center • add weighted normal and color to separate accumulation textures • output transformed depth of pe minus depth offset
Lighting Pass • Render full-screen quad to generate fragments • Normalization and lighting • vp • nothing • fp • divide accumulated color and normal by total weight • use depth texture to reconstruct 3D point • calc per-pixel lighting
Application to Projective Display • Display surface Estimation
Application to Projective Display • Rendering • Projective texturing • perform in attribute pass to determine color • must also invert viewing transform • Video
Conclusions • Surface splat representations suffer from many of the same problems as polygon meshes • holes, insufficient sampling etc. • Local least-squares fitting may reduce noise in estimating planar surfaces • Lack of connectivity may be advantageous in continuous surface estimation