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 Elliptical 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
Radii decreased to illustrate underlying splat representation. 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