Computer Graphics

advertisement
Computer Graphics
Computer Graphics
Lecture 13
Curves and Surfaces I
Computer Graphics
Types of Curves / Surfaces
• Explicit:
y = mx + b
z = A x + By + C
• Implicit:
(x – x0)2 + (y – y0)2 – r2 = 0
Ax + By + C = 0
• Parametric:
x = x0 + (x1 – x0)t
y = y0 + (y1 – y0)t
10/10/2008
Lecture 5
x = x0 + rcos
y = y0 + rsin
2
Computer Graphics
Today
• Implicit Surfaces
– Metaball
• Parametric surfaces
–
–
–
–
Hermite curve
Bezier curve
Biubic patches
Tessalation
10/10/2008
Lecture 5
3
Computer Graphics
Implicit Surfaces
• Functions in the form of F(x,y,z) = 0
– i.e. Quadric functions
Sphere: f(x,y,z) = x2+ y2+ z 2 = 0
3/10/2008
Lecture 3
4
Computer Graphics
Metaballs
•
•
•
•
One type of implicit surface
Also known as blobby objects
Negative volume to produce hollows
Can be used to model smooth surfaces, liquid
Computer Graphics
Metaballs (2)
•
•
•
•
A point surrounded by a density field
The density decreases with distance from the point
The density of multiple particles is summed
A surface is implied by sampling the area where
the density is a predefined threshold
Computer Graphics
An Example of the density function
1
f ( x, y , z ) 
( x  x0 ) 2  ( y  y0 ) 2  ( z  z0 ) 2
where (x0,y0,z0) is the
centre of the metaball
Computer Graphics
Metaballs (3)
•The surface points are sampled and
approximated by polygonal meshes for
rendering
Demo animation of metaballs
•http://www.youtube.com/watch?v=UWvGyK
olkho&feature=related
•http://www.youtube.com/watch?v=Nf_OlfW
MRaA&NR=1
Computer Graphics
Today
• Implicit Surfaces
– Metaball
• Parametric surfaces
–
–
–
–
Hermite curve
Bezier curve
Biubic patches
Tessalation
10/10/2008
Lecture 5
9
Computer Graphics
Why parametric?
• Parametric curves are very flexible.
• Parameter count gives the object’s
dimension.
(x(u,v), y(u,v), z(u,v)) : 2D surface
• Coord functions independent.
10/10/2008
Lecture 5
10
Computer Graphics
Specifying curves
• Control Points:
– A set of points that influence
the curve’s shape.
• Interpolating curve:
– Curve passes through the
control points.
• Control polygon:
– Control points merely
influence shape.
10/10/2008
Lecture 5
11
Computer Graphics
Piecewise curve segments
We can represent an arbitrary length curve as a series of curves
pieced together.
But we will want to control how these curves fit together …
10/10/2008
Lecture 5
12
Computer Graphics
Continuity between curve segments
• If the tangent vectors of two cubic curve segments are
equal at the join point, the curve has first-degree
continuity, and is said to be C1 continuous
n
n
• If the direction and magnitude of d / dt [Q(t)] through
the nth derivative are equal at the join point, the curve is
called Cn continuous
• If the directions (but not necessarily the magnitudes) of
two segments’ tangent vectors are equal at the join point,
the curve has G1 continuity
Computer Graphics
Example
• The curves Q1 Q2 Q3 join at point P
• Q1 and Q2 have equal tangent vectors at P and hence C1 and G1
continuous
• Q1 and Q3 have tangent vectors in the same direction but Q3 has
twice magnitude, so they are only G1 continuous at P
Computer Graphics
Parametric Cubic Curves
• In order to assure C2 continuity our functions must
be of at least degree 3.
• Cubic has 4 degrees of freedom and can control 4
things.
• Use polynomials: x(t) of degree n is a function of t.
x (t ) 
n
n
a
t
 i
–
i 0
– y(t) and z(t) are similar and each is handled independently
10/10/2008
Lecture 5
15
Computer Graphics
Hermite curves
• A cubic polynomial
• Polynomial can be specified by the position
of, and gradient at, each endpoint of curve.
• Determine: x = X(t) in terms of x0, x0’, x1,
x1’
Now:
X(t) = a3t3 + a2t2 + a1t + a0
/(t) = 3a t2 + 2a t + a
and
X
3 5
2
1
10/10/2008
Lecture
16
Computer Graphics
Finding Hermite coefficients
Substituting for t at each endpoint:
x0 = X(0) = a0
x0’= X/(0) = a1
x1 = X(1) = a3 + a2 + a1 + a0
x1’= X/(1) = 3a3 + 2a2+ a1
And the solution is:
a0 = x0
a1 = x0’
a2 = -3x0 – 2x0’+ 3x1 – x1’
a3 = 2x0 + x0’ - 2x1 + x1’
10/10/2008
Lecture 5
17
Computer Graphics
The Hermite matrix: MH
The resultant polynomial can be expressed in matrix form:
X(t) = tTMHq

X (t )  t 3 t 2
( q is the control vector)
 2 1  2 1   x0 
 3  2 3  1  x '
 0 
t 1
0
1
0 0   x1 

 
0
0 0   x1 ' 
1

We can now define a parametric polynomial for each
coordinate required independently, ie. X(t), Y(t) and Z(t)
10/10/2008
Lecture 5
18
Computer Graphics
Hermite Basis (Blending) Functions
1  2 1   x0 
2
 3  2 3  1  x '
0 
3
2



X (t )  t t t 1
0
1
0
0   x1 

 
0
0
0   x1 ' 
1
 (2t 3  3t 2  1)x0  (t 3  2t 2  t )x0 ' (2t 3  3t 2 )x1  (t 3  t 2 )x1 '


Computer Graphics
Hermite Basis (Blending) Functions
X (t )  (2t 3  3t 2  1)x0  (t 3  2t 2  t )x0 '(2t 3  3t 2 )x1  (t 3  t 2 )x1 '
The graph shows the shape of the
four basis functions – often called
blending functions.
x0
x1
They are labelled with the elements
of the control vector that they
weight.
Note that at each end only position
is non-zero, so the curve must
touch the endpoints
10/10/2008
x0'
Lecture 5
x1/
20
Computer Graphics
Family of Hermite curves.
y(t)
Note :
Start points on left.
x(t)
10/10/2008
Lecture 5
21
Computer Graphics
Displaying Hermite curves.
• Simple :
–
–
–
–
–
Select step size to suit.
Plug x values into the geometry matrix.
Evaluate P(t)  x value for current position.
Repeat for y & z independently.
Draw line segment between current and previous point.
• Joining curves:
– Coincident endpoints for C0 continuity
– Align tangent vectors for C1 continuity
10/10/2008
Lecture 5
.
22
Computer Graphics
Bézier Curves
• Hermite cubic curves are difficult to model
– need to specify point and gradient.
• More intuitive to only specify points.
• Pierre Bézier (an engineer at Renault)
specified 2 endpoints and 2 additional
control points to specify the gradient at the
endpoints.
• Can be derived from Hermite matrix:
– Two end control points specify tangent
10/10/2008
Lecture 5
23
Computer Graphics
Bézier Curves
P2
Note the Convex Hull has been shown as a
dashed line – used as a bounding extent
for intersection purposes.
P4
P1
P3
P3
P4
P1
P2
10/10/2008
Lecture 5
24
Computer Graphics
Bézier Matrix
• The cubic form is the most popular
X(t) = tTMBq (MB is the Bézier matrix)
• With n=4 and r=0,1,2,3 we get:

X (t )  t 3 t 2
 1 3  3
 3 6 3
t 1
 3 3
0

0
0
1

1 q0 
0  q1 
0   q2 
 
0  q3 
• Similarly for Y(t) and Z(t)
10/10/2008
Lecture 5
25
Computer Graphics
Bézier blending functions
This is how they look –
The functions sum to 1 at
any point along the curve.
q0
Endpoints have full weight
q3
q1
q2
The weights of each
function is clear and the
labels show the control
points being weighted.
10/10/2008
Lecture 5
26
Computer Graphics
Joining Bezier Curves
• G 1 continuity is provided at the endpoint
when P2 – P3 = k (Q1 – Q0)
• if k=1, C1 continuity is obtained
Computer Graphics
Bicubic patches
• The concept of parametric curves can be
extended to surfaces
• The cubic parametric curve is in the form of
Q(t)=tTM q where q=(q1,q2,q3,q4) : qi control
points, M is the basis matrix (Hermite or
Bezier,…), tT=(t3, t2, t, 1)
Computer Graphics
• Now we assume qi to vary along a parameter s,
• Qi(s,t)=tTM [q1(s),q2(s),q3(s),q4(s)]
• qi(s) are themselves cubic curves, we can write
them in the form …
Computer Graphics
Bicubic patches
Q( s, t )  t T . M .( sT . M .[q11 , q12 , q13 , q14 ],..., sT . M .[q 41, q 42 , q 43 , q 44 ])
 t T . M .q. M T .s
 q11
q
 12
q13

q14
q21
q22
q31
q32
q41 
q42 
q43 

q44 
q
q
where q is a 4x4 matrix
q
q
Each column contains the control points of
q1(s),…,q4(s)
x,y,z computed by x( s, t )  t T . M .q x . M T .s
23
33
24
34
y ( s, t )  t T . M .q y . M T .s
z ( s, t )  t T . M .q z . M T .s
Computer Graphics
Bézier example
• We compute (x,y,z) by
x( s, t )  t T . M B .q x . M BT . s
q x is 4  4 array of x coords
y ( s, t )  t T . M B .q y . M BT . s
q y is 4  4 array of y coords
z ( s, t )  t T . M B .q z . M BT . s
q z is 4  4 array of z coords
14/10/2008
Lecture 6
31
Computer Graphics
Continuity of Bicubic patches.
• Hermite and Bézier patches
– C0 continuity by sharing 4
control points between
patches.
– C1 continuity when both sets
of control points either side of
the edge are collinear with the
edge.
14/10/2008
Lecture 6
32
Computer Graphics
Displaying Bicubic patches.
• Need to compute the normals
– vector cross product of the 2 tangent vectors.
• Need to convert the bicubic patches into a
polygon mesh
– tessellation
14/10/2008
Lecture 6
33
Computer Graphics
Normal Vectors



Q( s, t )  (t T . M .q. M T . s )  t T . M .q. M T . ( s )
s
s
s
 t T . M .q x . M T .[3s 2 ,2 s,1,0]T

 T
 T
T
Q ( s, t )  (t . M .q. M . s )  (t ). M .q. M T . s
t
t
t
 [3t 2 ,2t ,1,0]T . M .q. M T .s


Q( s, t )  Q ( s, t )  ( y s zt  yt z s , z s xt  zt xs , xs yt  xt y s )
s
t
The surface normal is biquintic (two variables, fifthdegree) polynomial and very expensive
Can use finite difference to reduce the computation
Computer Graphics
Tessellation
• We need to compute the triangles on the surface
• The simplest way is do uniform tessellation, which
samples points uniformly in the parameter space
• Adaptive tessellation – adapt the size of triangles
to the shape of the surface
– i.e., more triangles where the surface bends more
– On the other hand, for flat areas we do not need many
triangles
14/10/2008
Lecture 6
35
Computer Graphics
Adaptive Tessellation
• For every triangle edges, check if each edge is
tessellated enough (curveTessEnough())
• If all edges are tessellated enough, check if the
whole triangle is tessellated enough as a whole
(triTessEnough())
• If one or more of the edges or the triangle’s
interior is not tessellated enough, then further
tessellation is needed
Computer Graphics
Adaptive Tessellation
• When an edge is not tessellated enough, a
point is created halfway between the edge
points’ uv-values
• New triangles are created and the tessellator
is once again called with the new triangles
as input
Four cases of further tessellation
Adaptive Tessellation
Computer Graphics
AdaptiveTessellate(p,q,r)
• tessPQ=not curveTessEnough(p,q)
• tessQR=not curveTessEnough(q,r)
• tessRP=not curveTessEnough(r,p)
• If (tessPQ and tessQR and tessRP)
–
–
–
–
•
AdaptiveTessellate(p,(p+q)/2,(p+r)/2);
AdaptiveTessellate(q,(q+r)/2,(q+p)/2);
AdaptiveTessellate(r,(r+p)/2,(r+q)/2);
AdaptiveTessellate((p+q)/2,(q+r)/2,(r+p)/2);
else if (tessPQ and tessQR)
– AdaptiveTessellate(p,(p+q)/2,r);
– AdaptiveTessellate((p+q)/2,(q+r)/2,r);
– AdaptiveTessellate((p+q)/2,q,(q+r)/2);
•
else if (tessPQ)
– AdaptiveTessellate(p,(p+q)/2,r);
– AdaptiveTessellate(q,r,(p+q)/2);
•
Else if (not triTessEnough(p,q,r))
AdaptiveTessellate((p+q+r)/3,p,q);
AdaptiveTessellate((p+q+r)/3,q,r);
AdaptiveTessellate((p+q+r)/3,r,p);
end;
Computer Graphics
curveTessEnough
• Say you are to judge whether ab needs
tessellation
• You can compute the midpoint c, and compute its
distance l from ab
• Check if l/||a-b|| is under a threshold
• Can do something similar for triTessEnough
– Sample at the mass center and calculate its distance
from the triangle
c
a
d
b
Computer Graphics
Other factors to evaluate
•
•
•
•
•
Inside the view frustum
Front facing
Occupying a large area in screen space
Close to the sillhouette of the object
Illuminated by a significant amount of
specular lighting
Computer Graphics
Demo
• http://www.nbb.cornell.edu/neurobio/land/
OldStudentProjects/cs49096to97/anson/BezierPatchApplet/
Computer Graphics
Reading for this lecture
• Foley et al. Chapter 11, section 11.2 up to and including
11.2.3
• Introductory text Chapter 9, section 9.2 up to and including
section 9.2.4
• Foley at al., Chapter 11, sections 11.2.3, 11.2.4, 11.2.9,
11.2.10, 11.3 and 11.5.
• Introductory text, Chapter 9, sections 9.2.4, 9.2.5, 9.2.7,
9.2.8 and 9.3.
• Real-time Rendering 2nd Edition Chapter 12.1-3
10/10/2008
Lecture 5
42
Download