Subdivision Curves Uniform B-spline of order 2: P 8 P 7 P 3 Q P 4 P 2 3 Q 2 Q 1 P 5 P 6 P 1 Chaikin’s algorithm for Quadratic Uniform B-splines: j odd: Q j = 3 4 P ( j +1) / 2 + 1 4 P ( j +3) / 2 j even: Q j = 1 4 P j/ 2 + 3 4 P ( j +2) / 2
Subdivision Curves Uniform B-spline of order 2: P 8 P 7 P 3 Q P 4 P 2 3 Q 2 Q 1 P 5 P 6 P 1 Chaikin’s algorithm for Quadratic Uniform B-splines: P i , i ∈ (1 , 2 , . . . , n ) Given n points: Produce 2(n-1) points: Q j , j ∈ (1 , 2 , . . . , 2 n − 2)
Subdivision Curves Uniform B-spline of order 2: P 8 P 7 P 3 Q P 4 P 2 3 Q 2 Q 1 P 5 P 6 P 1 Chaikin’s algorithm for Quadratic Uniform B-splines: P i , i ∈ (1 , 2 , . . . , n ) Given n points: Produce 2(n-1) points: Q j , j ∈ (1 , 2 , . . . , 2 n − 2) Let P = Q and iterate until number of points reaches desired accuracy.
Subdivision Curves Uniform B-spline of order 3: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 Given n points: P i , i ∈ (1 , 2 , . . . , n ) Q j , j ∈ (1 , 2 , . . . , 2 n − 3) Produce 2(n-1)-1 points:
Subdivision Curves Uniform B-spline of order 3: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 At each iteration produce 2(n-1)-1 points: Q 2 i − 1 = 1 2 P i + 1 2 P i +1 Q 2 i = 1 8 P i − 1 + 3 4 P i + 1 8 P i +1
Subdivision Curves Uniform B-spline of order 3: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 At each iteration produce 2(n-1)-1 points: Q 2 i − 1 = 1 2 P i + 1 2 P i +1 Q 2 i = 1 8 P i − 1 + 3 4 P i + 1 8 P i +1
Subdivision Curves Uniform B-spline of order 3: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 At each iteration produce 2(n-1)-1 points: Q 2 i − 1 = 1 2 P i + 1 2 P i +1 Q 2 i = 1 8 P i − 1 + 3 4 P i + 1 8 P i +1
Subdivision Curves Uniform B-spline of order 3: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 At each iteration produce 2(n-1)-1 points: Q 2 i − 1 = 1 2 P i + 1 2 P i +1 Q 2 i = 1 8 P i − 1 + 3 4 P i + 1 8 P i +1
Subdivision Curves Uniform B-spline of order 3: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 At each iteration produce 2(n-1)-1 points: Q 2 i − 1 = 1 2 P i + 1 2 P i +1 Q 2 i = 1 8 P i − 1 + 3 4 P i + 1 8 P i +1
Subdivision Curves Uniform B-spline of order 3: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 At each iteration produce 2(n-1)-1 points: Q 2 i − 1 = 1 2 P i + 1 2 P i +1 Q 2 i = 1 8 P i − 1 + 3 4 P i + 1 8 P i +1
Subdivision Curves Uniform B-spline of order 3: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 At each iteration produce 2(n-1)-1 points: Q 2 i − 1 = 1 2 P i + 1 2 P i +1 Q 2 i = 1 8 P i − 1 + 3 4 P i + 1 8 P i +1
Subdivision Curves Interpolating curves: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 In matrix form: for every 4 consecutive old points, produce 2 new points: 0 1 P 1 ✓ ◆ ✓ ◆ Q 1 = 1 P 2 0 16 0 0 B C B C Q 2 − 1 9 9 − 1 P 3 16 @ A P 4
Subdivision Curves Interpolating curves: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 In matrix form: for every 4 consecutive old points, produce 2 new points: 0 1 P 1 ✓ ◆ ✓ ◆ Q 1 = 1 P 2 0 16 0 0 B C B C Q 2 − 1 9 9 − 1 P 3 16 @ A P 4
Subdivision Curves Interpolating curves: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 In matrix form: for every 4 consecutive old points, produce 2 new points: 0 1 P 1 ✓ ◆ ✓ ◆ Q 1 = 1 P 2 0 16 0 0 B C B C Q 2 − 1 9 9 − 1 P 3 16 @ A P 4
Subdivision Curves Interpolating curves: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 In matrix form: for every 4 consecutive old points, produce 2 new points: 0 1 P 1 ✓ ◆ ✓ ◆ Q 1 = 1 P 2 0 16 0 0 B C B C Q 2 − 1 9 9 − 1 P 3 16 @ A P 4
Subdivision Curves Interpolating curves: P 8 P 3 P 7 P 4 P 2 P 1 P 5 P 6 Note: Before starting, make a copy of first and last points. At each iteration, copy the first and last points.
Examples Chaikin’s scheme
Examples Chaikin’s scheme Control polygon
Examples Daubechies scheme Fractal-like
Subdivision Surfaces Apply the same ideas to generating smooth surfaces. General approach: Start with a control Polytope. 1. At each iteration refine the polytope according to some rules. 2. Stop when resolution is high enough. 3.
Subdivision Surfaces Apply the same ideas to generating smooth surfaces. General approach: Start with a control Polytope. 1. At each iteration refine the polytope according to some rules. 2. Stop when resolution is high enough. 3.
Subdivision Rules There are topological and geometric changes. Geometric: • How the positions of the vertices change Topological: • How the connectivity changes
Subdivision Rules There are topological and geometric changes. Typically, both geometric and topological changes are local: New vertices, edges and faces depend on a small neighborhood of old ones.
Doo-Sabin subdivision surfaces Generalization of Chaikin’s corner cutting to surfaces. At each iteration: 1. Consider the barycenter of every (old) face 2. Construct centroids between the center and old vertices. 3. Connect them in a natural way. 4. Restart.
Doo-Sabin subdivision surfaces Generalization of Chaikin’s corner cutting to surfaces. At each iteration: 1. Consider the barycenter of every (old) face 2. Construct centroids between the center and old vertices. 3. Connect them in a natural way. 4. Restart.
Doo-Sabin subdivision surfaces Generalization of Chaikin’s corner cutting to surfaces. At each iteration: 1. Consider the barycenter of every (old) face 2. Construct centroids between the center and old vertices. 3. Connect them in a natural way. 4. Restart.
Doo-Sabin subdivision surfaces Generalization of Chaikin’s corner cutting to surfaces. At each iteration: 1. Consider the barycenter of every (old) face 2. Construct centroids between the center and old vertices. 3. Connect them in a natural way. 4. Restart.
Doo-Sabin subdivision surfaces Generalization of Chaikin’s corner cutting to surfaces. At each iteration: 1. Consider the barycenter of every (old) face 2. Construct centroids between the center and old vertices. 3. Connect them in a natural way. 4. Restart.
Doo-Sabin subdivision surfaces Generalization of Chaikin’s corner cutting to surfaces. At each iteration: 1. Consider the barycenter of every (old) face 2. Construct centroids between the center and old vertices. 3. Connect them in a natural way. 4. Restart.
Doo-Sabin subdivision surfaces Generalization of Chaikin’s corner cutting to surfaces. At each iteration: 1. Consider the barycenter of every (old) face 2. Construct centroids between the center and old vertices. 3. Connect them in a natural way. 4. Restart.
Doo-Sabin subdivision surfaces Generalization of Chaikin’s corner cutting to surfaces. At each iteration: 1. Consider the barycenter of every (old) face 2. Construct centroids between the center and old vertices. 3. Connect them in a natural way. 4. Restart.
Doo-Sabin subdivision surfaces
Catmull-Clark subdivision surfaces Generalization of cubic spline subdivision to surfaces. • Approximating Scheme • Small support stencil (just immediate neighbors) • Limit surface is 2nd-order continuous except at extraordinary vertices • Subdivision scheme used in all modern Pixar films
Catmull-Clark subdivision surfaces Generalization of cubic spline subdivision to surfaces. At each iteration: 1. Construct Face vertices: barycenters of old faces. 2. Construct Edge vertices. 3. Update existing vertices. 4. Connect them in a natural way. 4. Restart.
Catmull-Clark subdivision surfaces Generalization of cubic spline subdivision to surfaces. At each iteration: 1. Construct Face vertices: barycenters of old faces. 2. Construct Edge vertices: average of the old edge vertices and the associated face vertices
Catmull-Clark subdivision surfaces Generalization of cubic spline subdivision to surfaces. At each iteration: 1. Construct Face vertices: barycenters of old faces. 2. Construct Edge vertices: average of the old edge vertices and the associated face vertices
Catmull-Clark subdivision surfaces Generalization of cubic spline subdivision to surfaces. At each iteration: 1. Construct Face vertices: barycenters of old faces. 2. Construct Edge vertices: average of the old edge vertices and the associated face vertices
Catmull-Clark subdivision surfaces Generalization of cubic spline subdivision to surfaces. At each iteration: 1. Construct Face vertices: barycenters of old faces. 2. Construct Edge vertices. 3. Update existing vertices. 4. Connect them in a natural way. 4. Restart.
Catmull-Clark subdivision surfaces Generalization of cubic spline subdivision to surfaces. f 2 e 1 e 2 v new v old f 3 f 1 e 3 At each iteration: 1. Construct Face vertices: barycenters of old faces. 2. Construct Edge vertices. 3. Update existing vertices. e j : old vertex incident along edge j n n v new = v old + 1 ( e j − v old ) + 1 f i : new (orange) vertex on face j X X ( f j − v old ) n 2 n 2 n : number of incident edges. j =1 j =1
Catmull-Clark subdivision surfaces Generalization of cubic spline subdivision to surfaces. At each iteration: 1. Construct Face vertices. 2. Construct Edge vertices. 3. Update existing vertices. 4. Connect them in a natural way. 4. Restart.
Catmull-Clark subdivision surfaces Generalization of cubic spline subdivision to surfaces. At each iteration: 1. Construct Face vertices. 2. Construct Edge vertices. 3. Update existing vertices. 4. Connect them in a natural way. 4. Restart.
Catmull-Clark subdivision surfaces
Loop subdivision surfaces Triangle-based subdivision: At each iteration: 1. Construct Edge vertices. 2. Update existing vertices. 3. Connect them in a natural way. 4. Restart.
Loop subdivision surfaces Triangle-based subdivision: 3/8 1/8 1/8 3/8 At each iteration: 1. Construct Edge vertices. e i = 3 8 v e 1 + 3 8 v e 2 + 1 8 v t 1 + 1 8 v t 2
Recommend
More recommend