Transcript Document

UNIT-5
Curves
and Surfaces
Curves
• Curves are one dimensional entities
where the function is nonlinear
Curves
2
Curves
• Modeling computer graphics element with
curves requires specialized handles that
manage the look of a curve in an intuitive
way
• In addition, seaming curves to build
models is also important, for example
changing complexity in the middle of a
curve (Maya makes it trivial)
3
Representations for
curves
• Parametric representation
x
x = x(u), y = y(u) or simply p(u) where p =
y
- More robust and general than other forms
- Gives better control over curves and surfaces
Notation:
p(u) = c0 + c1u + c2u2
cix
where each c is a vector, ci =
ciy
4
Representations for
curves
• Example, quadric parametric curve:
p(u) = c0 + c1u + c2u2
Like curve:
x = 3u2
y = 2u + 3
for u = [-1,1]
c0 =
0
3
c1 =
0
2
c2=
3
0
Note, more
coefficients
than a quadratic
5
Representations for
curves
• Parametric curve, p(u) can as easily
represent a curve in 3D (x,y,z)
Simply:
x = fx(u)
y = fy(u)
z = fz(u)
Quadric coefs become:
c0 =
cox
coy
coz
c1x
c1 = c1y
c1z
c2x
c2= c2y
c2z
6
Parametric Cubic (pc)
curves
• Extension of quadrics to cubics
• Represented as:
p(u) = c0 + c1u + c2u2 + c3u3
• Also called Hermite curves after
the 17th century mathematician
7
Parametric Cubic (pc)
curves
• Algebraic form:
p(u) = c0 + c1u + c2u2 + c3u3
(Note,unless otherwise specified u goes
from 0,1)
• Not very intuitive, 12 values of c
• Instead want a better specify the curve
• More intuitive: control by start point p(0)
and ending point p(1) and their derivatives
8
Parametric Cubic (pc)
curves
• From: p(u) = c0 + c1u + c2u2 + c3u3
• Build a geometric form in order to specify
a curves by their end points and tangents
p(1)
p’(1)
p’(0)
p(0)
9
Parametric Cubic curves
• This leads to the Geometric Form:
p(u) = F1(u)p(0) + F2(u)p(1) + F3(u)p’(0) + F4(u)p’(1)
where:
F1(u) = 2u3 – 3u2 +1
F2(u) = -2u3 + 3u2
F3(u) = u3 – 2u2 + u
F4(u) = u3 – u2
10
Hermite curves basis
• F curves:
11
Joining Multiple Segments
use p = [p0 p1 p2 p3
]T
use p = [p3 p4 p5 p6]T
Get continuity at join points but not
continuity of derivatives
C0, C1, C2 continuity
12
Bezier Curves
• Family of curves developed in the 1970's by Bezier, a
engineer for Renault, car manufacturer
• Bezier's curves are only guaranteed to pass through
the end points, but other control points controlled the
derivative at the end points
• Specifically, the tangent was controlled by the next
control point in, the 2nd derivative by the second
control point in, and the nth derivative by the nth and
so on...
13
Bezier Curves
14
Bezier Curves
• The general form of the Bezier curve is:
n
p(u) = S pi fi(u)
0<u<1
i=0
• Vertices p control the curve and blending functions,
fi(u), that satisfy the "derivative" condition
• Bernstein polynomials were a family of functions that
were chosen by Bezier to satisfy his needs, these are
not the only functions that could be used though
15
Convex Hull Property
• The properties of the Bernstein polynomials
ensure that all Bezier curves lie in the convex
hull of their control points
• Hence, even though we do not reach all the
input data, we cannot be too far away
p1
p2
convex hull
Bezier curve
p0
p3
16
Bernstein Polynomials
• The blending functions are a special case
of the Bernstein polynomials
d!
d k
k
bkd (u ) 
u (1  u )
k!(d  k )!
• These polynomials give the blending
polynomials for any degree Bezier form
- All zeros at 0 and 1
- For any degree they all sum to 1
- They are all between 0 and 1 inside (0,1)
17
Bezier Matrix
• For a curve where n = 3, p is defined as:
p(u) = (1-u)2p0 + 2u(1-u)p1 + u2p2
0
0
1
 3 3
0
M B   3  6 3

 1 3  3
0
0
0

1
p(u) = uTMBp = b(u)Tp
blending functions
18
Bezier Curves
• p(u) = (1-u)2p0 + 2u(1-u)p1 + u2p2
p1
p2
p0
19
n=3
n=4
n=5
n=6
20
Bezier Curves
Bezier curves have
intuitive control,
are nicely formed,
convex hull of all points
21
B Splines
• One problem with the curves we have
looked at is that changing a single control
point affects the whole curve (this is called
global propogation,)
• Also, depends on # of control pts
• B-Splines offer an alternative, to only
affect the local region if a single control
point is modified (i.e. local propogation)
22
B Splines
• B-splines are also called Basis Splines
• They have a form similar to Bezier, Bsplines are defined as:
n
p(u) = S pi fi,k(u)
i=0
0<u<n+2-k
where n +1 is the number of control points
and k controls the degree of the blending
(or basis) functions
23
B Splines
• B-splines' blending functions are defined recursively:
fi,1(u) = 1 if ti < u < ti+1
= 0 otherwise
and
fi,m(u) =
(u - ti) fi,m-1(u)
ti+m-1 - ti
_
(u - ti + m) fi+1,m-1(u)
ti+m - ti+1
m goes from 2 to k
ti's are knot points relating u to control points, pi
24
B Splines
• Knot points,ti's, follow along like this:
ti = 0
if i < k
ti = i - k + 1 if k < i < n
ti = n- k + 2 if i > n
25
B Splines
• For 6 control pts & k = 1,
n= 5 and 0 < u < 6
We get the degenerate case:
p(u) = p0
p(u) = p1
p(u) = p2
p(u) = p3
p(u) = p4
p(u) = p5
0<u<1
1<u<2
2<u<3
3<u<4
4<u<5
5<u<6
26
B Splines
27
B Splines
• For 6 control pts & k = 2,
n= 5 and 0 < u < 5
We get a linear average of neighbors:
p(u) = (1 - u)p0 + u p1
p(u) = (2 - u)p1 + (u - 1)p2
p(u) = (3 - u)p2 + (u - 2)p3
p(u) = (4 - u)p3 + (u - 3)p4
p(u) = (5 - u)p4 + (u - 4)p5
0<u<1
1<u<2
2<u<3
3<u<4
4<u<5
28
B Splines
29
B Splines
• For 6 control pts & k = 3,
n= 5 and 0 < u < 4
We get:
for 0 < u < 1
p1(u) = (1 - u)2p0 + .5u(4 - 3u) p1 + .5 u2p2
for 1 < u < 2
p2(u) = .5(2 - u)2p1 + .5(-2u2 + 6u - 3) p2 + .5(u - 1)2p3
for 2 < u < 3
p3(u) = .5(3 - u)2p2 + .5(-2u2 + 10u - 11) p3 + .5(u - 2)2p4
for 3 < u < 4
p4(u) = .5(4 - u)2p3 + .5(-3u2 + 20u - 32) p4 + (u - 3)2p5
30
B Splines
• Note, influence grows with degree
k=2
k=3
k=4
31
B Splines
• Thus, local influence of control points on
curve as:
32
Cubic B-spline
p(u) = uTMSp = b(u)Tp
4
1
1
 3 0
3
M S   3  6 3

 1 3  3
0
0
0

1
33
Curves vs. Surfaces
• Curves are one dimensional entities
where the function is nonlinear
• Surfaces are formed from twodimensional functions
- Linear functions give planes and polygons
y
Curves
x
z
Surfaces
34
Curves vs. Surfaces
• Parametric curve, p(u) can as easily
represent a curve in 3D (x,y,z)
u=1
x = fx(u)
y = fy(u)
z = fz(u)
u = -1
35
Curves vs. Surfaces
• Parametric surface is very similar:
p(u,v)
Simply:
x = f(u, v)
y = f(u, v)
z = f(u, v)
(Just, more difficult to comprehend in a 2D representation,
we must go behind the image plane)
36
Parametric Surfaces
• Surfaces require 2 parameters
y
p(u,1)
x=x(u,v)
y=y(u,v)
p(0,v)
p(1,v)
z=z(u,v)
x
p(u,v) = [x(u,v), y(u,v), z(u,v)]T z p(u,0)
• Want same properties as curves:
- Smoothness
- Differentiability
- Ease of evaluation
37
Bezier Patches
Using same data array P=[pij] as with interpolating form
3
3
p(u, v)   bi (u ) b j (v) pij  uT M B P MTB v
i 0 j 0
Patch lies in
convex hull
38
B-Spline Patches
3
3
p(u, v)   bi (u ) b j (v) pij  u MS P M v
T
T
S
i 0 j 0
defined region
39
Rendering Curves
• How do we draw the curve, given p(u)?
void evaluateCurve(u,pixelX,pixelY)
p(1)
tangent
p’(0)
p’(1)
tangent
p(0)
40
Rendering Curves
• Polyline approximation
p(1)
piecewise linear
discrete approximation
p(0)
41
Splitting a Cubic Bezier
p0, p1 , p2 , p3 determine a cubic Bezier polynomial
and its convex hull
Consider left half l(u) and right half r(u)
42
l(u) and r(u)
Since l(u) and r(u) are Bezier curves, we should be able to
find two sets of control points {l0, l1, l2, l3} and {r0, r1, r2, r3}
that determine them
43
Efficient Form
l 0 = p0
r3 = p3
l1 = ½(p0 + p1)
r1 = ½(p2 + p3)
l2 = ½(l1 + ½( p1 + p2))
r1 = ½(r2 + ½( p1 + p2))
l3 = r0 = ½(l2 + r1)
Requires only shifts and adds!
44
Surfaces
• Can apply the recursive method to surfaces if
we recall that for a Bezier patch curves of
constant u (or v) are Bezier curves in u (or v)
• First subdivide in u
- Process creates new points
- Some of the original points are discarded
original and discarded
original and kept
new
45
Second Subdivision
16 final points for
1 of 4 patches created
46
Normals
We can differentiate with respect to u and v to
obtain the normal at any point p
x (u , v ) / u 
p(u , v ) 
 y(u , v) / u 
u
 z (u , v ) / u 
x (u , v) / v 
p(u , v) 
 y(u , v) / v 
v
 z(u , v) / v 
p(u, v) p(u, v)
n

u
v
47
Utah Teapot
• Most famous data set in computer graphics
• Widely available as a list of 306 3D vertices and
the indices that define 32 Bezier patches
48