Presentation is loading. Please wait.

Presentation is loading. Please wait.

(c) 2002 University of Wisconsin

Similar presentations


Presentation on theme: "(c) 2002 University of Wisconsin"— Presentation transcript:

1 (c) 2002 University of Wisconsin
Last Time Hermite Curves Bezier Curves 11/21/02 (c) 2002 University of Wisconsin

2 (c) 2002 University of Wisconsin
Today Bezier Continuity B-spline Curves 11/21/02 (c) 2002 University of Wisconsin

3 (c) 2002 University of Wisconsin
Longer Curves A single cubic Bezier or Hermite curve can only capture a small class of curves At most 2 inflection points One solution is to raise the degree Allows more control, at the expense of more control points and higher degree polynomials Control is not local, one control point influences entire curve Alternate, most common solution is to join pieces of cubic curve together into piecewise cubic curves Total curve can be broken into pieces, each of which is cubic Local control: Each control point only influences a limited part of the curve Interaction and design is much easier 11/21/02 (c) 2002 University of Wisconsin

4 Piecewise Bezier Curve
“knot” P0,0 P1,3 P0,3 P1,0 P1,2 P1,1 11/21/02 (c) 2002 University of Wisconsin

5 (c) 2002 University of Wisconsin
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 Question: How do we ensure that two Hermite curves are C1 across a knot? Question: How do we ensure that two Bezier curves are C0, or C1, or C2 across a knot? 11/21/02 (c) 2002 University of Wisconsin

6 (c) 2002 University of Wisconsin
Achieving Continuity For Hermite curves, the user specifies the derivatives, so C1 is achieved simply by sharing points and derivatives across the knot For Bezier curves: They interpolate their endpoints, so C0 is achieved by sharing control points The parametric derivative is a constant multiple of the vector joining the first/last 2 control points So C1 is achieved by setting P0,3=P1,0=J, and making P0,2 and J and P1,1 collinear, with J-P0,2=P1,1-J C2 comes from further constraints on P0,1 and P1,2 11/21/02 (c) 2002 University of Wisconsin

7 (c) 2002 University of Wisconsin
Bezier Continuity P0,1 P0,2 P0,0 P1,3 J P1,2 P1,1 Disclaimer: PowerPoint curves are not Bezier curves, they are interpolating piecewise quadratic curves! This diagram is an approximation. 11/21/02 (c) 2002 University of Wisconsin

8 (c) 2002 University of Wisconsin
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? 11/21/02 (c) 2002 University of Wisconsin

9 (c) 2002 University of Wisconsin
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? 11/21/02 (c) 2002 University of Wisconsin

10 Bezier Geometric Continuity
P0,1 P0,2 P0,0 P1,3 J P1,1 P1,2 11/21/02 (c) 2002 University of Wisconsin

11 Problem with Bezier Curves
To make a long continuous curve with Bezier segments requires using many segments 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 11/21/02 (c) 2002 University of Wisconsin

12 (c) 2002 University of Wisconsin
B-splines B-splines automatically take care of continuity, with exactly one control vertex per curve segment Many types of B-splines: degree may be different (linear, quadratic, cubic,…) and they may be uniform or non-uniform We will only look closely at uniform B-splines With uniform B-splines, continuity is always one degree lower than the degree of each curve piece Linear B-splines have C0 continuity, cubic have C2, etc 11/21/02 (c) 2002 University of Wisconsin

13 Uniform Cubic B-spline on [0,1)
Four control points are required to define the curve for 0t<1 (t is the parameter) Not surprising for a cubic curve with 4 degrees of freedom The equation looks just like a Bezier curve, but with different basis functions Also called blending functions - they describe how to blend the control points to make the curve 11/21/02 (c) 2002 University of Wisconsin

14 (c) 2002 University of Wisconsin
Basis Functions on [0,1] Does the curve interpolate its endpoints? Does it lie inside its convex hull? B1,4 B2,4 B0,4 B3,4 11/21/02 (c) 2002 University of Wisconsin

15 Uniform Cubic B-spline on [0,1)
The blending functions sum to one, and are positive everywhere The curve lies inside its convex hull The curve does not interpolate its endpoints Requires hacks or non-uniform B-splines There is also a matrix form for the curve: 11/21/02 (c) 2002 University of Wisconsin

16 Uniform Cubic B-splines on [0,m)
Curve: n is the total number of control points d is the order of the curves, 2  d  n+1 Bk,d are the uniform B-spline blending functions of degree d-1 Pk are the control points Each Bk,d is only non-zero for a small range of t values, so the curve has local control 11/21/02 (c) 2002 University of Wisconsin

17 Uniform Cubic B-spline Blending Functions
11/21/02 (c) 2002 University of Wisconsin

18 (c) 2002 University of Wisconsin
Computing the Curve P1B1,4 P4B4,4 P0B0,4 P2B2,4 P6B6,4 P3B3,4 P5B5,4 The curve can’t start until there are 4 basis functions active 11/21/02 (c) 2002 University of Wisconsin

19 Using Uniform B-splines
At any point t along a piecewise uniform cubic B-spline, there are four non-zero blending functions Each of these blending functions is a translation of B0,4 Consider the interval 0t<1 We pick up the 4th section of B0,4 We pick up the 3rd section of B1,4 We pick up the 2nd section of B2,4 We pick up the 1st section of B3,4 11/21/02 (c) 2002 University of Wisconsin

20 (c) 2002 University of Wisconsin
Demo 11/21/02 (c) 2002 University of Wisconsin

21 Uniform B-spline at Arbitrary t
The interval from an integer parameter value i to i+1 is essentially the same as the interval from 0 to 1 The parameter value is offset by i A different set of control points is needed To evaluate a uniform cubic B-spline at an arbitrary parameter value t: Find the greatest integer less than or equal to t: i = floor(t) Evaluate: Valid parameter range: 0t<n-3, where n is the number of control points 11/21/02 (c) 2002 University of Wisconsin

22 (c) 2002 University of Wisconsin
Loops To create a loop, use control points from the start of the curve when computing values at the end of the curve: Any parameter value is now valid Although for numerical reasons it is sensible to keep it within a small multiple of n 11/21/02 (c) 2002 University of Wisconsin

23 (c) 2002 University of Wisconsin
Demo 11/21/02 (c) 2002 University of Wisconsin

24 B-splines and Interpolation, Continuity
Uniform B-splines do not interpolate control points, unless: You repeat a control point three times But then all derivatives also vanish (=0) at that point To do interpolation with non-zero derivatives you must use non-uniform B-splines with repeated knots To align tangents, use double control vertices Then tangent aligns similar to Bezier curve Uniform B-splines are automatically C2 All the blending functions are C2, so sum of blending functions is C2 Provides an alternate way to define blending functions To reduce continuity, must use non-uniform B-splines with repeated knots 11/21/02 (c) 2002 University of Wisconsin

25 From B-spline to Bezier
Both B-spline and Bezier curves represent cubic curves, so either can be used to go from one to the other Recall, a point on the curve can be represented by a matrix equation: P is the column vector of control points M depends on the representation: MB-spline and MBezier T is the column vector containing: t3, t2, t, 1 By equating points generated by each representation, we can find a matrix MB-spline->Bezier that converts B-spline control points into Bezier control points 11/21/02 (c) 2002 University of Wisconsin

26 B-spline to Bezier Matrix
11/21/02 (c) 2002 University of Wisconsin

27 Non-Uniform B-Splines
Uniform B-splines are a special case of B-splines Each blending function is the same A blending functions starts at t=-3, t=-2, t=-1,… Each blending function is non-zero for 4 units of the parameter Non-uniform B-splines can have blending functions starting and stopping anywhere, and the blending functions are not all the same 11/21/02 (c) 2002 University of Wisconsin

28 (c) 2002 University of Wisconsin
B-Spline Knot Vectors Knots: Define a sequence of parameter values at which the blending functions will be switched on and off Knot values are increasing, and there are n+d+1 of them, forming a knot vector: (t0,t1,…,tn+d) with t0  t1  …  tn+d Curve only defined for parameter values between td-1 and tn+1 These parameter values correspond to the places where the pieces of the curve meet There is one control point for each value in the knot vector The blending functions are recursively defined in terms of the knots and the curve degree 11/21/02 (c) 2002 University of Wisconsin

29 B-Spline Blending Functions
The recurrence relation starts with the 1st order B-splines, just boxes, and builds up successively higher orders This algorithm is the Cox - de Boor algorithm Carl de Boor is a professor here 11/21/02 (c) 2002 University of Wisconsin

30 Uniform Cubic B-splines
Uniform cubic B-splines arise when the knot vector is of the form (-3,-2,-1,0,1,…,n+1) Each blending function is non-zero over a parameter interval of length 4 All of the blending functions are translations of each other Each is shifted one unit across from the previous one Bk,d(t)=Bk+1,d(t+1) The blending functions are the result of convolving a box with itself d times, although we will not use this fact 11/21/02 (c) 2002 University of Wisconsin

31 (c) 2002 University of Wisconsin
Bk,1 11/21/02 (c) 2002 University of Wisconsin

32 (c) 2002 University of Wisconsin
Bk,2 11/21/02 (c) 2002 University of Wisconsin

33 (c) 2002 University of Wisconsin
Bk,3 11/21/02 (c) 2002 University of Wisconsin

34 (c) 2002 University of Wisconsin
B0,4 11/21/02 (c) 2002 University of Wisconsin

35 (c) 2002 University of Wisconsin
B0,4 Note that the functions given on slides 5 and 6 are translates of this function obtained by using (t-1), (t-2) and (t-3) instead of just t, and then selecting only a sub-range of t values for each function 11/21/02 (c) 2002 University of Wisconsin

36 Interpolation and Continuity
The knot vector gives a user control over interpolation and continuity If the first knot is repeated three times, the curve will interpolate the control point for that knot Repeated knot example: (-3,-3,-3, -2, -1, 0, …) If a knot is repeated, so is the corresponding control point If an interior knot is repeated, continuity at that point goes down by 1 Interior points can be interpolated by repeating interior knots A deep investigation of B-splines is beyond the scope of this class 11/21/02 (c) 2002 University of Wisconsin

37 (c) 2002 University of Wisconsin
Rendering B-splines Same basic options as for Bezier curves Evaluate at a set of parameter values and join with lines Hard to know where to evaluate, and how pts to use Use a subdivision rule to break the curve into small pieces, and then join control points What is the subdivision rule for B-splines? Instead of subdivision, view splitting as refinement: Inserting additional control points, and knots, between the existing points Useful not just for rendering - also a user interface tool Defined for uniform and non-uniform B-splines by the Oslo algorithm 11/21/02 (c) 2002 University of Wisconsin

38 Refining Uniform Cubic B-splines
Basic idea: Generate 2n-3 new control points: Add a new control point in the middle of each curve segment: P’0,1, P’1,2, P’2,3 , …, P’n-2,n-1 Modify existing control points: P’1, P’2, …, P’n-2 Throw away the first and last control Rules: If the curve is a loop, generate 2n new control points by averaging across the loop When drawing, don’t draw the control polygon, join the X(i) points 11/21/02 (c) 2002 University of Wisconsin

39 (c) 2002 University of Wisconsin
Rational Curves Each point is the ratio of two curves Just like homogeneous coordinates: NURBS: x(t), y(t), z(t) and w(t) are non-uniform B-splines Advantages: Perspective invariant, so can be evaluating in screen space Can perfectly represent conic sections: circles, ellipses, etc Piecewise cubic curves cannot do this 11/21/02 (c) 2002 University of Wisconsin


Download ppt "(c) 2002 University of Wisconsin"

Similar presentations


Ads by Google