Copyright © COMP371 Computer Graphics Instructors Administrative
Total Page:16
File Type:pdf, Size:1020Kb
COMP371 COMPUTER GRAPHICS SESSION 9 SPLINES Copyright © COMP371 Computer Graphics Instructors Administrative ▪Solution to Programming Assignment #1 ▪ At the end of today’s lecture ▪Programming Assignment #2 ▪ Deadline: 17th October 2017 ▪ QUIZ #1 - 10th October 2017 2 Copyright © COMP371 Computer Graphics Instructors Lecture Overview ▪Review of last class ▪ Hierarchical Modeling - Blender/Maya demo ▪Splines ▪Hermite Splines ▪Bezier Splines ▪Catmull-Rom Splines ▪Other Cubic Splines 3 Copyright © COMP371 Computer Graphics Instructors Modeling Complex Shapes ▪ We want to build models of very complicated objects ▪ Complexity is achieved using simple pieces ▪ polygons, ▪ parametric curves and surfaces ▪ implicit curves and surfaces ▪ In this lecture we will focus on parametric curves Credi t 4 Copyright © COMP371 Computer Graphics Instructors Curve Representation Requirements ▪ What do we need from curves in Computer Graphics? ▪ Local control of shape (so that it’s easy to build and modify) ▪ Stability ▪ Smoothness and continuity ▪ Ability to evaluate derivatives ▪ Ease of rendering 5 Copyright © COMP371 Computer Graphics Instructors Curve Representations ▪ Explicit: y = f(x) ▪ Must be a function (single valued) ▪ Limitation: vertical lines, circle? 6 Copyright © COMP371 Computer Graphics Instructors Curve Representations ▪ Explicit: y = f(x) ▪ Must be a function (single valued) ▪ Limitation: vertical lines, circle? ▪ Implicit: f(x,y) = 0 ▪ Pros: y can be a multiple valued function of x ▪ Cons: Hard to specify, modify, control 7 Copyright © COMP371 Computer Graphics Instructors Curve Representations ▪ Explicit: y = f(x) ▪ Must be a function (single valued) ▪ Limitation: vertical lines, circle? ▪ Implicit: f(x,y) = 0 ▪ Pros: y can be a multiple valued function of x ▪ Cons: Hard to specify, modify, control ▪ Parametric: (x,y) = (f(u),g(u)) ▪ Pros: Easy to specify, modify, control ▪ Cons: Extra “hidden” variable u, i.e. the parameter 8 Copyright © COMP371 Computer Graphics Instructors Parameterization of a Curve ▪ Parameterization of a curve: how a change in u moves you along a given curve in xyz space ▪ Parameterization is not unique. It can be slow, fast, with continuous/discontinuous speed, clockwise (CW) or CCW, etc 9 Copyright © COMP371 Computer Graphics Instructors Interpolation vs Approximation ▪ There are two ways to “connect the dots”: ▪ Interpolation → polynomial sections are fitted so that all the control points are connected ▪ Approximation → polynomial curve is plotted so that some, or all, of the control points are not on the curve path 10 Copyright © COMP371 Computer Graphics Instructors Polynomial Interpolation ▪ An nth degree polynomial fits a curve to n+1 points ▪ called Lagrange Interpolation ▪ result is a curve that is too wiggly, change to any control point affects the entire curve i.e. non-local ▪ this method is poor ▪ We usually want the curve to be as smooth as possible ▪ minimize wiggles ▪ high-degree polynomials are bad 11 Copyright © COMP371 Computer Graphics Instructors Splines: Piecewise Polynomials ▪ A spline is a piecewise polynomial ▪ Curve is broken into consecutive segments ▪ Each segment is a low-degree polynomial interpolating i.e. passing through the control points ▪ Cubic piecewise polynomials are the most common: ▪ They are the lowest order polynomials that ▪ interpolate two points and ▪ allow the gradient at each point to be defined (C1 continuity possible) ▪ Piecewise definition gives local control ▪ Higher or lower degrees are possible, of course 12 Copyright © COMP371 Computer Graphics Instructors Piecewise Polynomials ▪ Spline: many polynomials pieced together ▪ Want to make sure they fit together nicely curvature: a measure of how rapidly a curve is bending at a point 13 Copyright © COMP371 Computer Graphics Instructors Splines ▪ Types of splines: ▪ Hermite Splines ▪ Bezier Splines ▪ Catmull-Rom Splines ▪ Natural Cubic Splines ▪ B-Splines ▪ NURBS ▪ Splines can be used to model both curves and surfaces 14 Copyright © COMP371 Computer Graphics Instructors Cubic Curves in 3D ▪ Cubic polynomial: ▪ p(u) = au3+bu2+cu+d = [u3 u2 u 1] [a b c d]T ▪ a,b,c,d are 3-vectors, u is a scalar ▪ Three cubic polynomials, one for each coordinate: 3 2 ▪ x(u) = axu + bxu + cxu + dx 3 2 ▪ y(u) = ayu + byu + cyu + dy 3 2 ▪ z(u) = azu + bzu + czu + dz ▪ In matrix notation: ▪ Or simply: p = [u3 u2 u 1] A 15 Copyright © COMP371 Computer Graphics Instructors Cubic Hermite Splines ▪ Interpolating piecewise cubic polynomial ▪ We want a way to specify the end points and the tangent at the end points! 16 Copyright © COMP371 Computer Graphics Instructors Deriving Hermite Splines ▪ Four constraints: value and slope (in 3-D, position and tangent vector) at beginning and end of interval [0,1] : p(0) = p1 = (x1 , y1 , z1) p(1) = p = (x , y , z ) 2 2 2 2 user p’(0) = p’1 = (x’1 , y’1 , z’c1o)nstraints p’(1) = p’2 = (x’2 , y’2 , z’2) ▪ Assume cubic form: p(u) = au3 + bu2 + cu + d ▪ Four unknowns: a, b, c, d 17 Copyright © COMP371 Computer Graphics Instructors Deriving Hermite Splines cont’d ▪ Assume cubic form: p(u) = au3 + bu2 + cu + d p1 = p(0) = d p2 = p(1) = a + b + c + d p’1 = p’(0) = c p’2 = p’(1) = 3a + 2b + c ▪ Linear system: 12 equations for 12 unknowns (however, can be simplified to 4 equations for 4 unknowns) ▪ Unknowns: a, b, c, d (each of a, b, c, d is a 3-vector) 18 Copyright © COMP371 Computer Graphics Instructors Deriving Hermite Splines 19 Copyright © COMP371 Computer Graphics Instructors The Cubic Hermite Spline Equation ▪ After inverting the 4x4 matrix, we obtain: ▪ This form is typical for splines ▪ basis matrix and meaning of control matrix change with the spline type 20 Copyright © COMP371 Computer Graphics Instructors Four Basis Functions for Hermite Splines ▪ Every cubic Hermite spline is a linear combination (blend) of these 4 functions 21 Copyright © COMP371 Computer Graphics Instructors Piecing Together Hermite Splines ▪ Easy to make a multi-segment Hermite Spline: ▪ each segment is specified by a cubic Hermite curve ▪ just specify the position and tangent at each “joint” (called knot) ▪ the pieces fit together with matched positions and first derivatives ▪ gives C1 continuity ▪ local control 22 Copyright © COMP371 Computer Graphics Instructors Hermite Splines in Adobe Illustrator 23 Copyright © COMP371 Computer Graphics Instructors Bezier Splines ▪ Variant of the Hermite spline ▪ Interpolates endpoints ▪ Approximation of other two control points ▪ Instead of endpoints and tangents, four control points ▪ points P1, P4 are on the curve (end points) → p(0) = P1 and p(1) = P4 ▪ points P2, P3 are off the curve ▪ p’(0) = 3(P2-P1) ▪ p’(1) = 3(P4-P3) ▪ Basis matrix is derived from the Hermite basis (or from scratch) ▪ Convex Hull property: curve contained within the convex hull of control points ▪ Scale factor “3” is chosen to make “velocity” approximately constant 24 Copyright © COMP371 Computer Graphics Instructors The Bezier Spline Matrix 25 Copyright © COMP371 Computer Graphics Instructors Bezier Blending Functions ▪ Also known as the order 4, degree 3 Bernstein polynomials ▪ Nonnegative, sum to 1 ▪ The entire curve lies inside the polyhedron bounded by the control points 26 Copyright © COMP371 Computer Graphics Instructors DeCasteljau Construction ▪ Efficient algorithm to evaluate Bezier splines ▪ Similar to Horner rule for polynomials ▪ Can be extended to interpolations of 3D rotations 27 Copyright © COMP371 Computer Graphics Instructors Catmull-Rom Splines ▪ With Hermite Splines, the designer must arrange for consecutive tangents to be co-linear, to get C1 continuity. Similar for Bezier. This gets tedious. ▪ Catmull-Rom: an interpolating cubic spline with built in C1 continuity. ▪ Compared to Hermite/Bezier: fewer control points required, but less freedom 28 Copyright © COMP371 Computer Graphics Instructors Constructing the Catmull-Rom Spline ▪ Suppose we are given n control points in 3-D: p1, p2, …, pn. ▪ For a Catmull-Rom spline, we set the tangent at pi to s*(pi+1 – pi-1) for i=2, ..., n-1, for some s (often s=0.5) ▪ s is tension parameter: determines the magnitude (but not direction!) of the tangent vector at point pi ▪ What about endpoint tangents? Use extra control points p0, pn+1. ▪ Now we have positions and tangents at each knot. This is a Hermite specification → use Hermite formulas to derive the spline. ▪ Note: curve between pi and pi+1 is completely determined 29 by pi-1, pi, pi+1, pi+C2op.yright © COMP371 Computer Graphics Instructors Catmull-Rom Spline Matrix ▪ Derived in a way similar to Hermite and Bezier ▪ Parameter s is typically set to s = 0.5 30 Copyright © COMP371 Computer Graphics Instructors Spline with More Continuity? ▪ So far, only C1 continuity ▪ How could we get C2 continuity at control points? ▪ Possible answers: ▪ Use higher degree polynomials ▪ degree 4 = quadtric, degree 5 = quintic, etc but these get computationally expensive, and sometimes wiggly ▪ Give up local control → natural cubic splines ▪ A change to any control point affects the entire curve ▪ Give up interpolation → cubic b-splines ▪ Curve goes near, but not through the control points 31 Copyright © COMP371 Computer Graphics Instructors Comparison of Basic Cubic Splines 32 Copyright © COMP371 Computer Graphics Instructors Natural Cubic Splines ▪ If you want 2nd derivatives at joints to match up, the resulting curves are called natural cubic splines ▪ It’s a simple computation to solve for the cubics' coefficients ▪ See Numerical Recipes in C book for code ▪ Finding all the right weights is a global calculation