1 / 66

#7: Cubic Curves

#7: Cubic Curves CSE167: Computer Graphics Instructor: Ronen Barzel UCSD, Winter 2006 Outline for today Inverses of Transforms Curves overview B é zier curves Graphics pipeline transformations Remember the series of transforms in the graphics pipe:

omer
Télécharger la présentation

#7: Cubic Curves

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. #7: Cubic Curves CSE167: Computer Graphics Instructor: Ronen Barzel UCSD, Winter 2006

  2. Outline for today • Inverses of Transforms • Curves overview • Bézier curves

  3. Graphics pipeline transformations • Remember the series of transforms in the graphics pipe: • M - model: places object in world space • C - camera: places camera in world space • P - projection: from camera space to normalized view space • D - viewport: remaps to image coordinates • And remember about C: • handy for positioning the camera as a model • backwards for the pipeline: • we need to get from world space to camera space • So we need to use C-1 • You’ll need it for project 4: OpenGL wants you to load C-1 as the base of the MODELVIEW stack

  4. How do we get C-1? • Could construct C, and use a matrix-inverse routine • Would work. • But relatively slow. • And we didn’t give you one :) • Instead, let’s construct C-1 directly • based on how we constructed C • based on shortcuts and rules for affine transforms

  5. Inverse of a translation • Translate back, i.e., negate the translation vector • Easy to verify:

  6. Inverse of a scale • Scale by the inverses • Easy to verify:

  7. Inverse of a rotation • Rotate about the same axis, with the oppose angle: • Inverse of a rotation is the transpose: • Columns of a rotation matrix are orthonormal • ATA produces all columns’ dot-product combinations as matrix • Dot product of a column with itself = 1 (on the diagonal) • Dot product of a column with any other column = 0 (off the diagonal)

  8. Inverses of composition • If you have a series of transforms composed together

  9. Composing with inverses, pictorially • To go from one space to another, compose along arrows • Backwards along arrow: use inverse transform

  10. Model-to-Camera transform Camera-to-worldC Model-to-Camera = C-1M y z x Camera Space

  11. The look-at transformation • Remember, we constructed C using the look-at idiom:

  12. C-1 from a,b,c,d columns

  13. Outline for today • Inverses of Transforms • Curves overview • Bézier curves

  14. Usefulness of curves in modeling • Surface of revolution

  15. Usefulness of curves in modeling • Extruded/swept surfaces

  16. Usefulness of curves in modeling • Surface patches

  17. Usefulness of curves in animation • Provide a “track” for objects http://www.f-lohmueller.de/

  18. Usefulness of curves in animation • Specify parameter values over time: 2D curve edtior

  19. How to represent curves • Specify every point along a curve? • Used sometimes as “freehand drawing mode” in 2D applications • Hard to get precise results • Too much data, too hard to work with generally • Specify a curve using a small number of “control points” • Known as a spline curveor just spline

  20. Interpolating Splines • Specify points, the curve goes through all the points • Seems most intuitive • Surprisingly, not usually the best choice. • Hard to predict behavior • Overshoots • Wiggles • Hard to get “nice-looking” curves

  21. Approximating Splines • “Influenced” by control points but not necessarily go through them. • Various types & techniques • Most common: (Piecewise) Polynomial Functions • Most common of those: • Bézier • B-spline • Each has good properties • We’ll focus on Bézier splines

  22. What is a curve, anyway? • We draw it, think of it as a thing existing in space • But mathematically we treat it as a function, x(t) • Given a value of t, computes a point x • Can think of the function as moving a point along the curve x(t) z x(0.0) x(0.5) x(1.0) y y x

  23. The tangent to the curve • Vector points in the direction of movement • (Length is the speed in the direction of movement) • Also a function of t, x(t) z x’(0.0) x’(0.5) x’(1.0) y y x

  24. Polynomial Functions • Linear: (1st order) • Quadratic: (2nd order) • Cubic: (3rd order)

  25. Point-valued Polynomials (Curves) • Linear: (1st order) • Quadratic: (2nd order) • Cubic: (3rd order) • Each is 3 polynomials “in parallel”: • We usually define the curve for 0 ≤t≤ 1

  26. How much do you need to specify? • Two points define a line (1st order) • Three points define a quadratic curve (2nd order) • Four points define a cubic curve (3rd order) • k+1 points define a k-order curve • Let’s start with a line…

  27. Linear Interpolation • Linear interpolation, AKA Lerp • Generates a value that is somewhere in between two other values • A ‘value’ could be a number, vector, color, … • Consider interpolating between two points p0 and p1 by some parameter t • This defines a “curve” that is straight. AKA a first-order spline • When t=0, we get p0 • When t=1 we get p1 • When t=0.5 we get the midpoint . p1 t=1 . p0 0<t<1 t=0

  28. Linear interpolation • We can write this in three ways • All exactly the same equation • Just different ways of looking at it • Different properties become apparent

  29. Linear interpolation as weighted average • Each weight is a function of t • The sum of the weights is always 1, for any value of t • Also known as blending functions

  30. Linear interpolation as polynomial • Curve is based at point p0 • Add the vector, scaled by t . p1-p0 . . p0 .5(p1-p0)

  31. Linear interpolation in matrix form

  32. Linear Interpolation: tangent • For a straight line, the tangent is constant

  33. Outline for today • Inverses of Transforms • Curves overview • Bézier curves

  34. Bézier Curves • Can be thought of as a higher order extension of linear interpolation p1 p1 p2 p1 p3 p0 p0 p0 p2 Linear Quadratic Cubic

  35. Cubic Bézier Curve • Most common case • 4 points for a cubic Bézier • Interpolates the endpoints • Midpoints are “handles” that control the tangent at the endpoints • Easy and intuitive to use • Many demo applets online • http://www.cs.unc.edu/~mantler/research/bezier/ • http://www.theparticle.com/applets/nyu/BezierApplet/ • http://www.sunsite.ubc.ca/LivingMathematics/V001N01/UBCExamples/Bezier/bezier.html • Convex Hull property • Variation-diminishing property

  36. Bézier Curve Formulation • Ways to formulate Bézier curves, analogous to linear: • Weighted average of control points -- weights are Bernstein polynomials • Cubic polynomial function of t • Matrix form • Also, the de Casteljau algorithm: recursive linear interpolations • Aside: Many of the original CG techniques were developed for Computer Aided Design and manufacturing. • Before games, before movies, CAD/CAM was the big application for CG. • Pierre Bézier worked for Peugot, developed curves in 1962 • Paul de Casteljau worked for Citroen, developed the curves in 1959

  37. Bézier Curve • Find the point x on the curve as a function of parameter t: p1 • x(t) p0 p2 p3

  38. de Casteljau Algorithm • A recursive series of linear interpolations • Works for any order. We’ll do cubic • Not terribly efficient to evaluate this way • Other forms more commonly used • So why study it? • Kinda neat • Intuition about the geometry • Useful for subdivision (later today)

  39. de Casteljau Algorithm • Start with the control points • And given a value of t • In the drawings, t≈0.25 p1 p0 p2 p3

  40. de Casteljau Algorithm p1 q1 q0 p0 p2 q2 p3

  41. de Casteljau Algorithm q1 r0 q0 r1 q2

  42. de Casteljau Algorithm r0 • x r1

  43. p1 • x p0 p2 p3 de Casteljau algorihm • Applets • http://www2.mat.dtu.dk/people/J.Gravesen/cagd/decast.html • http://www.caffeineowl.com/graphics/2d/vectorial/bezierintro.html

  44. Recursive Linear Interpolation

  45. Expand the Lerps

  46. Weighted average of control points • Group this as a weighted average of the points:

  47. Bézier using Bernstein Polynomials • Notice: • Weights always add to 1 • B0 and B3go to 1 -- interpolating the endpoints

  48. General Bernstein Polynomials

  49. General Bézier using Bernstein Polynomials • Bernstein polynomial form of an nth-order Bézier curve:

  50. p3 p1 p0 p2 Convex Hull Property • Construct a convex polygon around a set of points • The convex hullof the control points • Any weighted average of the points, with the weights all between 0 and 1: • Known as a convex combination of the points • Result always lies within the convex hull (including on the border) • Bézier curve is a convex combination of the control points • Curve is always inside the convex hull • Very important property! • Makes curve predictable • Allows culling • Allows intersection testing • Allows adaptive tessellation

More Related