Parametric Surfaces • Define points on the surface in terms of two parameters • Simplest case: bilinear interpolation s x(s,1) P 1,1 P0,1 x( s,0) (1 s ) P0, 0 sP1, 0 x(s,t) x( s,1) (1 s ) P0,1 sP1,1 x( s, t ) (1 t ) x( s,0) tx( s,1) F0, s 1 s, F1, s s F0,t 1 t , F1,t t 1 t P0,0 1 x( s, t ) Pi , j Fi , s ( s ) F j ,t (t ) i 0 j 0 P1,0 s x(s,0) Tensor Product Surface Patches • Defined over a rectangular domain – Valid parameter values come from within a rectangular region in parameter space: 0s<1, 0t<1 • Use a rectangular grid of control points to specify the surface – 4 points in the bi-linear case, more in other cases ds dt • Surface takes the form: x( s, t ) Pi, j Fi,s (s) Fj ,t (t ) i 0 j 0 Bezier Patches n m xs, t Pi , j Bin s B mj t i 0 j 0 • As with Bezier curves, Bin(s) and Bjm(t) are the Bernstein polynomials of degree n and m respectively • Most frequently, use n=m=3: cubic Bezier patch – Need 4x4=16 control points, Pi,j Bezier Patches (2) • Edge curves are Bezier curves • Any curve of constant s or t is a Bezier curve • One way to think about it: – Each row of 4 control points defines a Bezier curve in s – Evaluating each of these curves at the same s provides 4 virtual control points – The virtual control points define a Bezier curve in t – Evaluating this curve at t gives the point x(s,t) x(s,t) Properties of Bezier Patches • The patch interpolates its corner points – Comes from the interpolation property of the underlying curves • The tangent plane at each corner interpolates the corner vertex and the two neighboring edge vertices – The tangent plane is the plane that is perpendicular to the normal vector at a point – The tangent plane property derives from the curve tangent properties and the way to compute normal vectors • The patch lies within the convex hull of its control vertices – The basis functions sum to one and are positive everywhere Bezier Patch Matrix Form x( s, t ) S T B T PBT x ( s, t ) s 3 s 2 1 3 3 3 6 3 s 1 3 3 0 0 0 1 1 P0, 0 0 P1, 0 0 P2, 0 0 P3, 0 P0,1 P0, 2 P1,1 P1, 2 P2,1 P2, 2 P3,1 P3, 2 P0,3 1 3 3 P1,3 3 6 3 P2,3 3 3 0 P3,3 1 0 0 1 t 3 0 t 2 0 t 0 1 • Note that the 3 matrices stay the same if the control points do not change – The middle product can be pre-computed, leaving only: x( s, t ) s 3 s 2 M 0,0 M 1, 0 s 1 M 2,0 M 3, 0 M 0,1 M 0, 2 M 1,1 M 1, 2 M 2,1 M 2, 2 M 3,1 M 3, 2 M 0 , 3 t 3 M 1,3 t 2 M 2,3 t M 3,3 1 Bezier Patch Meshes • A patch mesh is just many patches joined together along their edges – Patches meet along complete edges – Each patch must be rectangular OK OK Not OK Not OK Bezier Mesh Continuity • Just like curves, the control points must satisfy rigid constraints to ensure parametric continuity – How do we ensure C0 continuity along an edge? – How do we ensure C1 continuity along an edge? – How do we ensure C2 continuity along an edge? • For geometric continuity, constraints are less rigid • What can you say about the vertices around a corner if there must be C1 continuity at the corner point? Bezier Mesh Continuity • Just like curves, the control points must satisfy rigid constraints to ensure parametric continuity – C0 continuity along an edge? Share control points at the edge – C1 continuity along an edge? Control points across edge are collinear and equally spaced – C2 continuity along an edge? Constraints extent to points farther from the edge • For geometric continuity, constraints are less rigid – Still collinear for G1, but can be anywhere along the line • What can you say about the vertices around a corner if there must be C1 continuity at the corner point? – They are co-planar (not the interior points, just corner and edge) Rendering Bezier Patches • Option 1: Evaluate at fixed set of parameter values and join up with triangles – – – – Can’t use quadrilaterals because points may not be co-planar Ideal situation for triangle strips Advantage: Simple, and OpenGL has commands to do it for you Disadvantage: No easy way to control quality of appearance • Option 2: Subdivide – Allows control of error in the triangle approximation – Defined much like curve subdivision, but done once in each parametric direction Midpoint Subdivision • Repeatedly join midpoints to find new control vertices – Do it first for each row of original control points: 4x4 -> 4x7 – Then do it for each column of new control points:4x7 -> 7x7 A Potential Problem • One (good) way to subdivide, is: – If a control mesh is flat enough – draw it – Else, subdivide into 4 sub-patches and recurse on each • Problem: Neighboring patches may not be subdivided to the same level – Cracks can appear because join edges have different control meshes – This can be fixed by carefully shifting vertices around • Make more highly subdivided match less subdivided along edges Crack Computing Normal Vectors • The partial derivative in the s direction is one tangent vector • The partial derivative in the t direction is another • Take their cross product, and normalize, to get the surface normal vector n m dBin m x Pi , j B j t s s ,t i 0 j 0 ds s x x n s s ,t t s ,t n m dB j x n Pi , j Bi s t s ,t i 0 j 0 dt m nˆ n n t B-spline Patches n m xs, t Pi , j Bi s B j t i 0 j 0 • Bi(s) and Bj(t) are the B-spline blending functions • Uniform B-spline patches use uniform knot vectors in each parametric direction Evaluating B-spline Patches • Use the same trick as with curves: – – – – All the blending functions are translations of each other Find: a=floor(s), b=floor(t) Compute: u=s-a, v=t-b Use blending functions for [0,1) interval given in last lecture for B-spline curves 3 3 xs, t Pa i ,b j Bi u B j v i 0 j 0 B-spline Patch Properties • Patch lies within convex hull of control vertices • Continuity is automatically C2 for uniform cubic B-splines • Interpolation can be forced by duplicating control vertices – Problem: Partial derivatives will vanish, resulting in undefined normal vectors – Solution: use normal from control polygon, or use normal from a nearby point on the surface • Interpolation and changing in continuity can be achieved with non-uniform B-splines • NURBS patches can also be defined – Definition follows directly from NURBS curves, but now all coordinates are functions of s,t B-spline Patch Subdivision • We’ll look at this next lecture, in the context of subdivision surfaces
© Copyright 2026 Paperzz