Lecture notes

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: 0s<1, 0t<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
xs, 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
xs, 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
xs, 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