450 likes | 654 Views
Lecture 13 Curves and Surfaces I. Computer Graphics. Types of Curves / Surfaces. Explicit: y = mx + b z = A x + B y + C Implicit: Ax + By + C = 0 (x – x 0 ) 2 + (y – y 0 ) 2 – r 2 = 0 Parametric:
E N D
Lecture 13 Curves and Surfaces I Computer Graphics
Lecture 5 Types of Curves / Surfaces • Explicit: y = mx + b z = A x + By + C • Implicit: Ax + By + C = 0 (x – x0)2 + (y – y0)2 – r2 = 0 • Parametric: x = x0 + (x1 – x0)t x = x0 + rcos y = y0 + (y1 – y0)t y = y0 + rsin
Lecture 5 Today • Implicit Surfaces • Metaball • Parametric surfaces • Hermite curve • Bezier curve • Biubic patches • Tessalation
Lecture 3 Implicit Surfaces • Functions in the form of F(x,y,z) = 0 • i.e. Quadric functions • Sphere: f(x,y,z) = x + y + z = 0 • 2 2 2
Metaballs • One type of implicit surface • Also known as blobby objects • Negative volume to produce hollows • Can be used to model smooth surfaces, liquid
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
An Example of the density function where (x0,y0,z0) is the centre of the metaball
Metaballs (3) • The surface points are sampled and approximated by polygonal meshes for rendering Demo animation of metaballs • http://www.youtube.com/watch?v=UWvGyKolkho&feature=related • http://www.youtube.com/watch?v=Nf_OlfWMRaA&NR=1
Lecture 5 Today • Implicit Surfaces • Metaball • Parametric surfaces • Hermite curve • Bezier curve • Biubic patches • Tessalation
Lecture 5 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.
Lecture 5 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.
Lecture 5 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 …
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 C continuous • If the direction and magnitude of d / dt [Q(t)] through the nth derivative are equal at the join point, the curve is called C continuous • If the directions (but not necessarily the magnitudes) of two segments’ tangent vectors are equal at the join point, the curve has G continuity 1 n n n 1
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
Lecture 5 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. • y(t) and z(t) are similar and each is handled independently
Lecture 5 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 and X/(t) = 3a3t2 + 2a2t + a1
Lecture 5 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’
Lecture 5 The Hermite matrix: MH The resultant polynomial can be expressed in matrix form: X(t) = tTMHq ( q is the control vector) We can now define a parametric polynomial for each coordinate required independently, ie. X(t), Y(t) and Z(t)
Lecture 5 Hermite Basis (Blending) Functions The graph shows the shape of the four basis functions – often called blending functions. 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 x0 x1 x0' x1/
Lecture 5 Family of Hermite curves. y(t) Note : Start points on left. x(t)
Lecture 5 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 .
Lecture 5 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
Lecture 5 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
Lecture 5 Bézier Matrix • The cubic form is the most popular X(t) = tTMBq (MB isthe Bézier matrix) • With n=4 and r=0,1,2,3 we get: • Similarly for Y(t) and Z(t)
Lecture 5 Bézier blending functions This is how they look – The functions sum to 1 at any point along the curve. Endpoints have full weight The weights of each function is clear and the labels show the control points being weighted. q0 q3 q1 q2
Joining Bezier Curves 1 • G continuity is provided at the endpoint when P2 – P3 = k (Q1 – Q0) • if k=1, C continuity is obtained 1
Bicubic patches • The concept of parametric curves can be extended to surfaces • The cubic parametric curve is in the form of Q(t)=tTMqwhere q=(q1,q2,q3,q4) : qi control points, M is the basis matrix (Hermite or Bezier,…), tT=(t3, t2, t, 1)
Now we assume qito 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 …
Bicubic patches where q is a 4x4 matrix Each column contains the control points of q1(s),…,q4(s) x,y,z computed by
Lecture 6 Bézier example • We compute (x,y,z) by
Lecture 6 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.
Lecture 6 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
Normal Vectors The surface normal is biquintic (two variables, fifth-degree) polynomial and very expensive Can use finite difference to reduce the computation
Lecture 6 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
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
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 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;
c a b d 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
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
Demo • http://www.nbb.cornell.edu/neurobio/land/OldStudentProjects/cs490-96to97/anson/BezierPatchApplet/
Lecture 5 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