B-Spline Blending FunctionsUniform Cubic B-splinesBk,1Bk,2Bk,3B0,4Slide 7Uniform Cubic B-spline Blending FuncsComputing the CurveUsing Uniform B-splinesBlending Function on [0,1]Uniform B-spline on [0,1)Uniform B-spline at Arbitrary tLoopsB-splines and Interpolation, ContinuityRendering B-splinesRefining Uniform Cubic B-splinesRational CurvesOpenGL and Parametric CurvesOpenGL and NURBSFrom B-spline to BezierB-spline to Bezier Matrix otherwise 0 111,kkkttttBB-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 in the CS department here at Madison tBtttttBtttttBdkkdkdkdkkdkkdk1,111,1,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 factBk,1B 0,100.20.40.60.811.2-3-2.8-2.6-2.4-2.2-2-1.8-1.6-1.4-1.2-1-0.8-0.6-0.4-0.200.20.40.60.81tB0,1(t)B 2,100.20.40.60.811.2-3-2.8-2.6-2.4-2.2-2-1.8-1.6-1.4-1.2-1-0.8-0.6-0.4-0.200.20.40.60.81tB2,1(t)B 3,100.20.40.60.811.2-3-2.8-2.6-2.4-2.2-2-1.8-1.6-1.4-1.2-1-0.8-0.6-0.4-0.200.20.40.60.81tB3,1(t)B 1,100.20.40.60.811.2tB1,1(t)Bk,2B 0,200.20.40.60.811.2-3-2.8-2.6-2.4-2.2-2-1.8-1.6-1.4-1.2-1-0.8-0.6-0.4-0.200.20.40.60.81tB0,2(t)B 1,200.20.40.60.811.2-3-2.8-2.6-2.4-2.2-2-1.8-1.6-1.4-1.2-1-0.8-0.6-0.4-0.200.20.40.60.81tB1,2(t)B 2,200.20.40.60.811.2-3-2.8-2.6-2.4-2.2-2-1.8-1.6-1.4-1.2-1-0.8-0.6-0.4-0.200.20.40.60.81tB2,2(t)12 123 3)(2,0tttttBBk,3B 0,300.10.20.30.40.50.60.70.8-3-2.8-2.6-2.4-2.2-2-1.8-1.6-1.4-1.2-1-0.8-0.6-0.4-0.200.20.40.60.81tB0,3(t)B 1,300.10.20.30.40.50.60.70.8-3-2.8-2.6-2.4-2.2-2-1.8-1.6-1.4-1.2-1-0.8-0.6-0.4-0.200. 20. 40. 60. 81tB1,3(t) 01 12 36223 321)(2223,0ttttttttBB0,4B 0,400.10.20.30.40.50.60.7-3-2.8-2.6-2.4-2.2-2-1.8-1.6-1.4-1.2-1-0.8-0.6-0.4-0.200.20.40.60.81tB0,4(t)B0,4 10 101 133312 52115323 361)(3232334,0tttttttttttttBUniform Cubic B-spline Blending Funcs00.10.20.30.40.50.60.7-3-2.7-2.3-2-1.6-1.3-0.9-0.6-0.20.10.50.81.21.51.92.22.62.93.33.644.34.7tB0,4B1,4B2,4B3,4B4,4B5,4B6,4Computing the Curve00.050.10.150.20.25-3-2 .7-2 .3-2-1 .6-1 .3-0 .9-0 .6-0 .20 .10 .50 .81 .21 .51 .92 .22 .62 .93 .33 .644 .34 .7t nkkktBPtX04,P0B0,4P1B1,4P2B2,4P3B3,4P4B4,4P5B5,4P6B6,4Using 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 0t<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,4Blending Function on [0,1]00.10.20.30.40.50.60.700.10.20.30.40.50.60.70.80.91tB0,4B1,4B2,4B3,4 333223213204,334,224,114,003331364331 61)()()()()(tPtttPttPtttPtBPtBPtBPtBPtxUniform B-spline on [0,1)•Four control points are required to define the curve for 0 t<1•The blending functions sum to one, and are positive everywhere–The curve lies inside its convex hull•Does the curve interpolate its endpoints?–Look at the blending functions to decide•There is also a matrix form for the curve: 1000113334063133161)(233210tttPPPPtxUniform 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: 0t<n-3, where n is the number of control points 304,kkkiitBPtXLoops•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 304,mod)(kknkiitBPtXB-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 knotsRendering 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 algorithmRefining 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
View Full Document