Subdivision Curves & Surfaces and Fractal Mountains. CS184 – Spring 2011 Outline • Review Bézier Curves • Subdivision Curves • Subdivision Surfaces – Quad mesh (Catmull-Clark scheme) – Triangle mesh (Loop scheme) • Fractal Mountains V2 Review of Bézier Curves DeCastlejau Algorithm V3 V1 Insert at t = ¾ V4 001 Review of Bézier Curves DeCastlejau Algorithm 011 Ignore funny notation at vertices! (= CS 284 stuff ) 000 Insert at t = ¾ 111 001 Review of Bézier Curves DeCastlejau Algorithm 0¾1 011 00¾ ¾11 000 Insert at t = ¾ 111 001 Review of Bézier Curves DeCastlejau Algorithm 0¾1 011 0¾¾ 00¾ ¾¾1 ¾11 000 Insert at t = ¾ 111 001 Review of Bézier Curves DeCastlejau Algorithm 0¾1 011 0¾¾ 00¾ ¾¾¾ ¾¾1 ¾11 000 Insert at t = ¾ 111 001 Review of Bézier Curves DeCastlejau Algorithm 0¾1 011 0¾¾ 00¾ ¾¾¾ ¾¾1 ¾11 Curve position and tangent for t = ¾ 000 Insert at t = ¾ 111 Subdivision of Bézier Curves 001 0¾1 011 0¾¾ 00¾ ¾¾¾ ¾¾1 ¾11 This also yields all control points for subdivision into 2 Bezier curves 000 Insert at t = ¾ 111 Subdivision of Bézier Curves 001 0¾1 011 0¾¾ 00¾ ¾¾¾ ¾¾1 ¾11 Convex Hull Property! 000 Insert at t = ¾ 111 Bézier Curves Summary • DeCastlejau algorithm is good for – Evaluating position(t) and tangent(t), – Subdividing the curve into 2 subcurves with their own control polygons. • Subdivision of Bézier curves and their convex hull property allows for: – Adaptive rendering based on a flatness criterion, – Adaptive collision detection using line segment tests. Outline • Review Bézier Curves • Subdivision Curves • Subdivision Surfaces – Quad mesh (Catmull-Clark scheme) – Triangle mesh (Loop scheme) • Fractal Mountains Subdivision Curves V20 V30 An approximating scheme Limit curve V10 • Subdivision is a recursive 2 step process – Topological split – Local averaging / smoothing V40 Subdivision Curves V2 0 E20 E10 V10 V30 E30 E40 • Subdivision is a repeated 2 step process – Topological split – Local averaging / smoothing V40 Subdivision Curves V2 E21 0 V21 V30 V31 E11 E31 V11 V10 E41 • Subdivision is a repeated 2 step process – Topological split – Local averaging / smoothing V41 V40 Subdivision Curves V2 E21 0 V21 V30 V31 E11 E31 V11 V10 E41 • Subdivision is a repeated 2 step process – Topological split – Local averaging / smoothing V41 V40 Subdivision Curves V2 E21 0 V21 V30 V31 E11 E31 V11 V10 E41 • Subdivision is a repeated 2 step process – Topological split – Local averaging / smoothing V41 V40 Results in a B-spline Curve Knots: 4 1 2 3 4 1 2 3 4 Subdivision Curve Summary • Subdivsion is a recursive 2 step process: – Topological split at midpoints, – Local averaging/smoothing operator applied. • Doubles the number of vertices at each step • Subdivision curves are nothing new: – Suitable averaging rules can yield uniform B-spline curves. Outline • Review Bézier Curves • Subdivision Curves • Subdivision Surfaces – Quad mesh (Catmull-Clark scheme) – Triangle mesh (Loop scheme) • Fractal Mountains Subdivision Overview Control Mesh Topological Split Averaging Limit Surface • Subdivision is a two part process: – Topological split – Local averaging / smoothing Subdivision Overview Control Mesh Generation 1 Generation 2 Generation 3 • Repeated uniform subdivisions of the control mesh converge to the limit surface. • Limit surface can be calculated in closed form for stationary schemes (averaging mask does not change). Outline • Review Bézier Curves • Subdivision Curves • Subdivision Surfaces: – Quad mesh (Catmull-Clark scheme) – Triangle mesh (Loop scheme) • Fractal Mountains B-spline Surfaces • A cubic B-spline surface patch is controlled by a regular 4x4 grid of control points B-spline Surfaces • 2 adjacent patches share 12 control points and meet with C2 continuity B-spline Surfaces • Requires a regular rectangular control mesh grid and all valence-4 vertices to guarantee continuity. Catmull-Clark Subdivision Surface • Yields smooth surfaces over arbitrary topology control meshes. • Closed control mesh closed limit surface. • Quad mesh generalization of B-splines – C1 at non-valence-4 vertices, – C2 everywhere else (B-splines). • Also: Sharp corners can be tagged – Allows for smooth and sharp features, – Allows for non-closed meshes. Catmull-Clark Subdivision Gen 0 Gen 1 Gen 2 • Extraordinary vertices are generated by non-valence-4 vertices and faces in the input mesh. • No additional extraordinary vertices are created after the first generation of subdivision. Catmull-Clark Averaging C20 V20 C30 V3 0 F2 0 F3 V4 C10 0 E20 E30 E40 V00 F1 0 E10 0 F4 0 V10 En0 Fn 0 C40 Vn0 Cn g g V V i E ig 0 2 g g g g V V C V i i i 1 Fig 0 4 (simple averaging) 0 1 n g 1 n g (n - 3)V 2 E i Fi n i 1 n i 1 g 1 V0 n g 0 n = valence Outline • Review Bézier Curves • Subdivision Curves • Subdivision Surfaces – Quad mesh (Catmull-Clark scheme) – Triangle mesh (Loop scheme) • Fractal Mountains Loop Subdivision Surface Gen 0 g g V V i E ig 0 2 Gen 1 Gen 2 2 3 2 cos( 2 / n) a 32 n 1 V0g 1 aV0g (1 a) E ig n i 1 n = valence Summary • Subdivision is a 2 step recursive process: – Topological split, – Local averaging / smoothing. • It is an easy way to make smooth objects – of irregular shape – of topologies other than rectangular (torus). Outline • Review Bézier Curves • Subdivision Curves • Subdivision Surfaces – Quad mesh (Catmull-Clark scheme) – Triangle mesh (Loop scheme) • Fractal Mountains Fractals • Self-similar recursive modeling operators: Sierpinski Triangle Koch Snowflake Linear Fractal Mountains Gen 0: Gen 1: Gen 2: Gen 3: • 2-step recursive process: – Subdivide chain by creating edge midpoints, – Randomly perturb midpoint positions (proportional to subdivided edge length). Fractal Mountain Surfaces Gen 0 Gen 1 • 2-step recursive process: – Subdivide triangles at edge midpoints, – Randomly perturb midpoint positions. Gen 2 Fractal Mountains Summary • 2-step recursive process: – Topological split at edge midpoints, – Random perturbation of midpoint positions. • Triangle topological split maintains a water-tight connected mesh. • Useful to make uneven, “natural” terrain. • Often a low-order subdivision is good enough to control terrain-following vehicles.