Lecture 14: Subdivision

CS-184: Computer Graphics
Lecture #14: Subdivision
Prof. James O’Brien
University of California, Berkeley
V2009-F-14-1.0
Subdivision
• Start
•
Given control points for a curve or surface, find new control points for
a sub-section of curve/surface
• Key
•
with:
extension to basic idea:
Generalize to non-regular surfaces
2
Consider NURBS Surface
Coarse mesh
Displaced CV
Large bump
Control mesh dictates feature size.
3
Consider NURBS Surface
Fine mesh
Displaced CV
Small bump
Control mesh dictates feature size.
Excessive detail
4
Tensor Product Surface
Refinement must be constant across u or v
directions
5
Bézier Subdivision
x(u) = ∑ bi(u) pi
i
x(u) = [1, u, u2, u3] βz P
Vector of control points
u ∈ [0..1]

1 0 0
 −3 3 0
βz = 
 3 −6 3
−1 3 −3

0
0 

0 
1
6
Bézier Subdivision
x(u) = [1, u, u2, u3] βz P
u ∈ [0..1/2]
u ∈ [1/2..1]

1 0 0
 −3 3 0
βz = 
 3 −6 3
−1 3 −3

0
0 

0 
1
7
Bézier Subdivision
x(u) = [1, u, u2, u3] βz P
Can’t change these....
u ∈ [0..1]
u ∈ [0..1]

1 0 0
 −3 3 0
βz = 
 3 −6 3
−1 3 −3

0
0 

0 
1
8
Bézier Subdivision
x(u) = [1, u, u2, u3] βz P
1
u ∈ [0.. ]
2
u u2 u3
x(u) = [1, , , ]βzP
2 4 8
u ∈ [0..1]
x(u) = [1, u, u2, u3]S1βzP


1 0 0 0
 0 1/2 0 0 

S1 = 
 0 0 1/4 0 
0 0 0 1/8
x(u) = [1, u, u2, u3]βzβ−1
z S1βzP
x(u) = [1, u, u2, u3]βzHz1P
9
Bézier Subdivision
x(u) = [1, u, u2, u3]βzHz1P
x(u) = [1, u, u2, u3]βzP1


Hz1 = 

1
1
2
1
4
1
8
0
1
2
1
2
3
8
0
0
1
4
3
8

0
0 

0 
P1 = Hz1P
1
8
10
Bézier Subdivision
x(u) = [1, u, u2, u3]βzP2
P2 = Hz2P

1
8
 0
Hz2 = 
 0
0
3
8
1
4
0
0
3
8
1
2
1
2
0
1
8
1
4
1
2
1





1
 0
S2 = 
 0
0
1
2
1
2
0
0
1
4
1
2
1
4
0
1
8
3
8
3
8
1
8




11
Bézier Subdivision
P2· = HZ2 P
x(u, v) = [1, u, u2, u3]βzPβTz[1, v, v2, v3]T
4 x 4 matrix of control
points
12
Bézier Subdivision
P21 = HZ2 P HTZ1
x(u, v) = [1, u, u2, u3]βzPβTz[1, v, v2, v3]T
4 x 4 matrix of control
points
13
Regular B-Spline Subdivision
Orthographic top-down
view
3D Perspective view
14
Regular B-Spline Subdivision
Orthographic top-down
view
3D Perspective view
15
Regular B-Spline Subdivision
x(u, v) = [1, u, u2, u3]βB P βTB[1, v, v2, v3]T
P11 = HB1 P HTB1
16
Regular B-Spline Subdivision
P11 = HB1 P HTB1
In this parametric view these
knot points are collocated.
The 3D control points are
not.
17
Regular B-Spline Subdivision
P11 = HB1 P HTB1
P12 = HB1 P HTB2
18
Regular B-Spline Subdivision
P11 = HB1 P HTB1
P12 = HB1 P HTB2
P22 = HB2 P HTB2
19
Regular B-Spline Subdivision
P11 = HB1 P HTB1
P12 = HB1 P HTB2
P22 = HB2 P HTB2
P21 = HB2 P HTB1

1
2
1
8


HB1 = 
 0

0
1
2
3
4
1
2
1
8
0 0
1
8
1
2
3
4


1
8
3
4
1
2
1
8


 0
0 
 HB2 = 
 0

0 

1
0 0
8
1
8
1
2
3
4
1
2
0


0 

1 
8 
1
2
Regular B-Spline Subdivision
Length 16 vector of coarse CPs
25 x 16 subdivision matrix
Length 25 vector of fine CPs
Pi+1 = H Pi
Regular B-Spline Subdivision
Pi+1 = H Pi
Inspection would reveal a
pattern
• Face points
• Edge points
• Vertex points
Regular B-Spline Subdivision
v1
Face point
v4
f
v2
m1 f
2
f1
m4
f3
v3
p
v
m2
m3 f4
f=
v1 + v2 + v3 + v4
4
Edge point
e=
v1 + v2 + f1 + f2
4
f1
v1
e
v2
Vertex point
v=
f1 + f2 + f3 + f4 + 2(m1 + m2 + m3 + m4) + 4p
16
m midpoint of edge, not “edge point”
p old “vertex point”
Regular B-Spline Subdivision
• Recall
f2
that control mesh approaches surface
Regular B-Spline Subdivision
• Limit
of subdivision is the surface
Irregular B-Spline Subdivision
• Catmull-Clark
•
Subdivision
Generalizes regular B-Spine subdivision
An irregular patch
Non-quad face
Extraordinary vertex
Irregular B-Spline Subdivision
• Catmull-Clark
Subdivision
Generalizes regular B-Spine subdivision
• Rules reduce to regular for ordinary vertices/faces
•
f = average of surrounding vertices
f1 + f2 + v1 + v2
e=
4
f¯ 2m̄ p(n − 3)
v= +
+
n
n
n
m̄ = average of adjacent midpoints
f¯ = average of adjacent face points
n = valence of vertex
Catmull-Clark Subdivision
28
Catmull-Clark Subdivision
29
Catmull-Clark Subdivision
30
Catmull-Clark Subdivision
31
Catmull-Clark Subdivision
32
Catmull-Clark Subdivision
33
Catmull-Clark Subdivision
34
Catmull-Clark Subdivision
35