4/27/04 © University of Wisconsin, CS559 S pring 2004 Last Time • Introduction to parametric curves • Hermite curves • Bezier curves • Continuity
Dec 14, 2015
4/27/04 © University of Wisconsin, CS559 Spring 2004
Last Time
• Introduction to parametric curves
• Hermite curves
• Bezier curves
• Continuity
4/27/04 © University of Wisconsin, CS559 Spring 2004
Today
• Geometric continuity
• Parametric surfaces– General Tensor product surfaces
– Bezier surfaces
• BSplines
• Homework 7 available, due Thursday May 6 in class
4/27/04 © University of Wisconsin, CS559 Spring 2004
Continuity
• When two curves are joined, we typically want some degree of continuity across the boundary (the knot)– C0, “C-zero”, point-wise continuous, curves share the same point
where they join
– C1, “C-one”, continuous derivatives, curves share the same parametric derivatives where they join
– C2, “C-two”, continuous second derivatives, curves share the same parametric second derivatives where they join
– Higher orders possible
4/27/04 © University of Wisconsin, CS559 Spring 2004
Bezier Continuity
P0,0
P0,1 P0,2
J
P1,1
P1,2
P1,3
Disclaimer: PowerPoint curves are not Bezier curves, they are interpolating piecewise quadratic curves! This diagram is an approximation.
4/27/04 © University of Wisconsin, CS559 Spring 2004
Sketch of Proof for C1
33
322
321
320
33
22
21
30
)(3)2(3)331(
)1(3)1(3)1(
ttttttttt
tttttt
xxxx
xxxxx
23
22
21
20 3)32(3)341(3)363( ttttttt
dt
dxxxx
x
Bezier curve equation:
Parametric derivative:
)(333 23321
xxxxx
tdt
d)(333 0110
0
xxxxx
tdt
d
Evaluated at endpoint of curve (note proves tangent property):
4/27/04 © University of Wisconsin, CS559 Spring 2004
Proof (cont)
P0,0
P0,1 P0,2
J
P1,1
P1,2
P1,3
2,01,1
2,01,1 )(3)(3
PJJP
PJJP
C1 requires equal parametric derivatives:
4/27/04 © University of Wisconsin, CS559 Spring 2004
DOF and Locality
• The number of degrees of freedom (DOF) can be thought of as the number of things a user gets to specify– If we have n piecewise Bezier curves joined with C0 continuity, how many
DOF does the user have?– If we have n piecewise Bezier curves joined with C1 continuity, how many
DOF does the user have?
• Locality refers to the number of curve segments affected by a change in a control point– Local change affects fewer segments– How many segments of a piecewise cubic Bezier curve are affected by each
control point if the curve has C1 continuity?– What about C2?
4/27/04 © University of Wisconsin, CS559 Spring 2004
Geometric Continuity
• Derivative continuity is important for animation– If an object moves along the curve with constant parametric speed, there
should be no sudden jump at the knots
• For other applications, tangent continuity might be enough– Requires that the tangents point in the same direction– Referred to as G1 geometric continuity– Curves could be made C1 with a re-parameterization: u=f(t)– The geometric version of C2 is G2, based on curves having the same radius
of curvature across the knot
• What is the tangent continuity constraint for a Bezier curve?
4/27/04 © University of Wisconsin, CS559 Spring 2004
Bezier Geometric Continuity
P0,0
P0,1 P0,2
J
P1,1 P1,2
P1,3
)()( 2,01,1 PJJP k for some k
4/27/04 © University of Wisconsin, CS559 Spring 2004
Parametric Surfaces
• Define points on the surface in terms of two parameters
• Simplest case: bilinear interpolation
s
t
s
x(s,t)
P0,0
P1,0
P1,1P0,1
x(s,0)
x(s,1)
1
0
1
0,,,
,1,0
,1,0
1,11,0
0,10,0
)()(),(
,1
,1
)1,()0,()1(),(
)1()1,(
)1()0,(
i jtjsiji
tt
ss
tFsFPtsx
tFtF
sFsF
stxsxttsx
sPPssx
sPPssx
4/27/04 © University of Wisconsin, CS559 Spring 2004
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 on the previous slide, more in other
cases
• Surface takes the form:– For some functions Fi,s and Fj,t
s td
i
d
jtjsiji tFsFts
0 0,,, )()(),( Px
4/27/04 © University of Wisconsin, CS559 Spring 2004
Bezier Patches
• 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
n
i
m
j
mj
niji tBsBts
0 0,, Px
4/27/04 © University of Wisconsin, CS559 Spring 2004
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)
4/27/04 © University of Wisconsin, CS559 Spring 2004
Properties of Bezier Patches
• Which vertices, if any, does the patch interpolate? Why?
• What can you say about the tangent plane at each corner? Why?
• Does the patch lie within the convex hull of its control vertices?
4/27/04 © University of Wisconsin, CS559 Spring 2004
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
4/27/04 © University of Wisconsin, CS559 Spring 2004
Bezier Patch Matrix Form
• Note that the 3 matrices stay the same if the control points do not change– The middle product can be pre-computed, leaving only:
10001
0033
0363
1331
0001
0033
0363
1331
1),(
),(
2
3
3,32,31,30,3
3,22,21,20,2
3,12,11,10,1
3,02,01,00,0
23
t
t
t
PPPP
PPPP
PPPP
PPPP
ssstsx
PBTBStsx TT
1
1),(2
3
3,32,31,30,3
3,22,21,20,2
3,12,11,10,1
3,02,01,00,0
23
t
t
t
MMMM
MMMM
MMMM
MMMM
ssstsx
4/27/04 © University of Wisconsin, CS559 Spring 2004
Bezier Patch Meshes
• A patch mesh is just many patches joined together along their edges– Patches meet along complete edges– Each patch must be a quadrilateral
OK
OK Not OK Not OK
4/27/04 © University of Wisconsin, CS559 Spring 2004
Bezier Mesh Continuity
• Just like curves, the control points must satisfy 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?
4/27/04 © University of Wisconsin, CS559 Spring 2004
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)
4/27/04 © University of Wisconsin, CS559 Spring 2004
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: Subdivision– Allows control of error in the triangle approximation
– Extend 1D curve subdivision to do surfaces
– Similar to other subdivision schemes we’ve seen
4/27/04 © University of Wisconsin, CS559 Spring 2004
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
4/27/04 © University of Wisconsin, CS559 Spring 2004
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 adding extra edges
Crack
4/27/04 © University of Wisconsin, CS559 Spring 2004
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
i
m
j
mj
s
ni
jits
tBds
dB
s 0 0,
,
Px
n
i
m
j t
mjn
ijits dt
dBsB
t 0 0,
,
Px
n
nn
xxn
ˆ ,, tsts ts
4/27/04 © University of Wisconsin, CS559 Spring 2004
Bezier Curve/Surface Problems
• To make a long continuous curve with Bezier segments requires using many segments– Same for large surface
• Maintaining continuity requires constraints on the control point positions– The user cannot arbitrarily move control vertices and automatically
maintain continuity
– The constraints must be explicitly maintained
– It is not intuitive to have control points that are not free