250 likes | 394 Views
Smooth Geometry Images. Frank Losasso, Hugues Hoppe, Scott Schaefer, Joe Warren. Overview. Provide a simple representation using a single uniform bi-cubic B-spline. Multiple Patches. Single Patch. Geometry Images. [Gu et al 2002]. Sample arbitrary surface using a regular 2D grid
E N D
Smooth Geometry Images Frank Losasso, Hugues Hoppe, Scott Schaefer, Joe Warren
Overview • Provide a simple representation using a single uniform bi-cubic B-spline Multiple Patches Single Patch
Geometry Images [Gu et al 2002] • Sample arbitrary surface using a regular 2D grid • Connectivity is implicit
[Gu et al 2002] cut parametrize
[Gu et al 2002] cut sample
[Gu et al 2002] cut store render [r,g,b] = [x,y,z]
General cut [Gu et al 2002] • Supports surfaces of arbitrary genus • But, boundary has complicated topology – requires sideband a a’ a’ a
Our Approach: X-Cut • Special type of cut curve • Make a X-cut centered at x • Unfold domain into a square image • Creates simple boundary symmetries
Spherical Remeshing mesh M sphere S domain D image I [Praun and Hoppe 2003] demo
How To Obtain Control Points • B-spline is approximating should not directly sample surface • Instead, use least-squares fitting:
How To Obtain Smoothness • Application of boundary rules • Pad image to recreate 1-ring around all vertices
Add a simple linear constraint C1 How To Obtain Smoothness • All vertices regular, except boundary midpoints generally not C1
Bi-cubic Subdivision on GPU 4 operators, stored as fragment programs limit bilinearsubdivision meshaveraging tangent repeat
4 operators, stored as fragment programs Bi-cubic Subdivision on GPU limit bilinearsubdivision meshaveraging tangent repeat
Rendering • “Interpret as vertex array” (OpenGL extension) • Render using triangles
… … … … Subsampled Subdivided Discrete Subdivision Levels • Both sub-sampling and subdivision are easily implemented (2k+1) x (2k+1) Original Image
Continuous Subdivision Levels • Prevent ‘popping’ when changing subdivision levels gk gk+1
Continuous Subdivision Levels • Prevent ‘popping’ when changing subdivision levels linearsubdivision 1- + gk+ bilinearsubdivision meshaveraging gk gk+1
Displacement Mapping simulation CPU GPU 33x33 GPU scalardisplacementmap 257x257
Drawbacks and Limitations • Genus cannot be >0 • Surface rippling
Summary • Closed smooth surface using single patch • Stored as geometry image • Simple and efficient GPU evaluation • Continuous level-of-detail • Displacement mapping 5x5 9x9
Eye candy 65x65 65x65 33x33