lecture 9: subdivision surfaces · subdivision surfaces these are generated by iterative...
TRANSCRIPT
![Page 1: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/1.jpg)
Lecture 9:
Subdivision surfaces
Topics:
1. Subdivision of Bezier curves
2. Chaikin’s scheme
3. General subdivision schemes
4. Bi-quadratic and bi-cubic subdivision
5. Subdivision surfaces: Catmull-Clark and Loop
Michael S. Floater, Oslo, Oct. 2003
1
![Page 2: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/2.jpg)
Subdivision of Bezier Curves
We saw in the last chapter how the de Casteljau algorithm both evaluates
the curve and divides it into two.
p1
l1
p0 = l0 p3 = r3
r2
p2l2 r1
l3 = r0
l(u) r(u)
If we divide a cubic curve at its (parametric) midpoint, the initial control
points p0, p1, p2, p3 are replaced by the new control points
`0 = p0
`1 = (p0 + p1)/2,
`2 = (p0 + 2p1 + p2)/4,
`3 = r0 = (p0 + 3p1 + 3p2 + p3)/4,
r1 = (p1 + 2p2 + p3)/4,
r2 = (p2 + p3)/2,
r3 = p3.
Under repeated division, called subdivision, the control polygon converges
to the curve. After only a few iterations the polygon is so close to the curve
that we can simply render the polygon rather than the curve.
2
![Page 3: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/3.jpg)
Subdivision curves
A subdivision curve is a curve generated by iterative refinement of a given
polygon, called the control polygon. The limit curve can be rendered by
simply rendering the polygon resulting from sufficiently many refinements.
Both Bezier curves and spline curves are subdivision curves. For example,
Chaikin’s scheme generates a C1 quadratic spline curve with uniform knots.
v
v
vi−1
i+1
i
From a control polygon . . . , vi−1, vi, vi+1, . . ., we generate a refined
polygon by the rule
v12i =
3
4vi−1 +
1
4vi,
v12i+1 =
1
4vi−1 +
3
4vi.
v
v
vi−1
i+1
iv
v2i2i+11
1
3
![Page 4: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/4.jpg)
The full subdivision scheme is as follows.
1. Set v0i = vi, for all i ∈ ZZ.
2. For n = 1, 2, . . ., set
vn2i =
3
4vn−1
i−1 +1
4vn−1
i ,
vn2i+1 =
1
4vn−1
i−1 +3
4vn−1
i .
The number of points doubles at each iteration. Here is the limiting curve:
v
v
vi−1
i+1
i
4
![Page 5: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/5.jpg)
The general (linear) subdivision scheme is
vni =
∑
k∈ZZ
ai−2kvn−1
k ,
where a0, a1, . . . , am is the (finite) subdivision mask (all other ai are
zero). The mask for Chaikin’s scheme is
( a0 a1 a2 a3 ) = ( 1
4
3
4
3
4
1
4) .
The mask can be split into two masks, for even and odd indexes separately:
v2i =∑
k∈ZZ
a2kvn−1
i−k ,
v2i+1 =∑
k∈ZZ
a2k+1vn−1
i−k ,
In Chaikin’s scheme, these equations become
vn2i = a0v
n−1
i + a2vn−1
i−1 =1
4vn−1
i +3
4vn−1
i−1 ,
vn2i+1 = a1v
n−1
i + a3vn−1
i−1 =3
4vn−1
i +1
4vn−1
i−1 ,
and the two masks are
( a0 a2 ) = ( 1
4
3
4) and ( a1 a3 ) = ( 3
4
1
4) .
5
![Page 6: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/6.jpg)
Another example is a C2 cubic spline curve (again with uniform knots).
The mask is
( a0 a1 a2 a3 a4 ) =1
8( 1 4 6 4 1 ) .
If we split into the two masks (a0, a2, a4) and (a1, a3), we get the scheme
vn2i =
1
8(vn−1
i + 6vn−1
i−1 + vn−1
i−2 ),
vn2i+1 =
1
2(vn−1
i + vn−1
i−1 ).
v
v
vi−2
i
i−1
v12i v1
2i+1
A uniform Cd−1 spline curve of degree d can be generated by the mask
( a0 a1 . . . ad+1 ) =1
2d((d+1
0
) (d+1
1
). . .
(d+1
d+1
)) .
6
![Page 7: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/7.jpg)
Subdivision surfaces
These are generated by iterative refinement of a polygonal mesh, usually
with four-sided faces (quadrilateral meshes) or three-sided faces (triangle
meshes).
7
![Page 8: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/8.jpg)
For uniform (‘structured’) meshes, the limit surface is a spline surface.
We get a tensor-product spline surface from a rectangular mesh, and a
‘box-spline’ surface from a triangular mesh.
Triangular gridRectangular grid
For non-uniform (‘unstructured’) meshes, the limit surface has no
closed form. However, the surface is locally a spline surface, except at
so-called extraordinary points.
Quadrilateral mesh Triangular mesh
8
![Page 9: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/9.jpg)
Tensor-product subdivision on rectangular grids.
Example 1. Chaikin (C1 biquadratic).
vi−1,jn−1
i,jn−1v
v
v
v
n−1
n2i+1,2j
2i,2j
i,j−1
i−1,j−1n−1
2i,2j+1
nv
v2i+1,2j+1n
vn
vn2i,2j =
1
16(9vn−1
i−1,j−1 + 3vn−1
i,j−1 + 3vn−1
i−1,j + vn−1
i,j )
vn2i+1,2j =
1
16(3vn−1
i−1,j−1 + 9vn−1
i,j−1 + vn−1
i−1,j + 3vn−1
i,j )
vn2i,2j+1 =
1
16(3vn−1
i−1,j−1 + vn−1
i,j−1 + 9vn−1
i−1,j + 3vn−1
i,j )
vn2i+1,2j+1 =
1
16(vn−1
i−1,j−1 + 3vn−1
i,j−1 + 3vn−1
i−1,j + 9vn−1
i,j ).
There are four submasks
1
16
(3 19 3
)
,1
16
(1 33 9
)
,1
16
(9 33 1
)
,1
16
(3 91 3
)
.
They are tensor-products of the quadratic curve masks. For example
1
16
(3 19 3
)
=1
4
(13
)1
4( 3 1 ) .
9
![Page 10: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/10.jpg)
Example 2. C2 bicubic.
vi−1,jn−1
i,jn−1v
v
v
n−1
i,j−1
i−1,j−1n−1
v
v
v
v
vi−2,j
i−2,j−2
i−1,j−2
i,j−2
n−1
n−1
n−1
n−1
n−12i,2j+1
v
2i+1,2j+1vn
2i+1,2jvn
v2i,2j
n
i−2,j−1
n
The mask for cubic curves is
( a0 a1 a2 a3 a4 ) =1
8( 1 4 6 4 1 ) .
and the two submasks are
1
8( 1 6 1 ) and
1
2( 1 1 ) .
10
![Page 11: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/11.jpg)
If we take tensor-products of these two submasks we get the four bicubic
masks
1
64
1 6 16 36 61 6 1
︸ ︷︷ ︸
Mask A
,1
16
1 16 61 1
,1
16
(1 6 11 6 1
)
︸ ︷︷ ︸
Masks B
,1
4
(1 11 1
)
︸ ︷︷ ︸
Mask C
.
These are used to compute the four new points
(vn2i+1,2j vn
2i+1,2j+1
vn2i,2j vn
2i,2j+1
)
from the old points
vn−1
i−2,j vn−1
i−1,j vn−1
i,j
vn−1
i−2,j−1 vn−1
i−1,j−1 vn−1
i,j−1
vn−1
i−2,j−2 vn−1
i−1,j−2 vn−1
i,j−2
.
11
![Page 12: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/12.jpg)
Catmull-Clark subdivision surfaces
This is a generalization of the C2 bicubic scheme to an arbitrary quadri-
lateral mesh. The limit surface is C2 except at extraordinary points.
12
![Page 13: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/13.jpg)
It is enough to define the masks associated with the following figure. In the
figure, 5 faces meet at the vertex v. In general there will be N faces. In the
‘canonical’ case we have N = 4.
e4
3f
e3
ff4
2n−1
f n
2en−1
f5 e
1
n−1v
v
3
en4
f1n−1
n−1
n−1n−1
n−1
f
f f
fn
n n
n4
5 1
2
e
e
2en
n
n5
1
en3
n−1
n−1
n−15
e
n
As for the N = 4 bicubic case, there are three types of points: vertex points
v, edge points e, and face points f , and there are three associated masks.
13
![Page 14: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/14.jpg)
The algorithm goes in three steps.
Step 1. Compute the new face points. We use Mask C as before:
fni =
1
4(vn−1 + en−1
i + en−1
i+1 + fn−1
i ).
Step 2. Compute the new edge points. We use Mask B as before:
eni =
1
16(en−1
i−1 + fn−1
i−1 + 6vn−1 + 6en−1
i + en−1
i+1 + fn−1
i ).
Using the new face points fni computed in the first step, this computation
reduces to
eni =
1
4(vn−1 + en−1
i + fni−1 + fn
i ).
Step 3. Compute the new vertex point. For N = 4 the rule for Mask A is
vn =1
64
(
36vn−1 + 64∑
i=1
en−1
i +4∑
i=1
fn−1
i
)
,
which can be expressed as
vn =1
4
(
2vn−1 +1
4
4∑
i=1
en−1
i +1
4
4∑
i=1
fni
)
.
Catmull and Clark proposed the generalization
vn =1
N
(
(N − 2)vn−1 +1
N
N∑
i=1
en−1
i +1
N
N∑
i=1
fni
)
.
This formula ensures C1 continuity at the extraordinary points. It can
be shown that C2 continuity at extraordinary points is impossible without
using larger masks.
14
![Page 15: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/15.jpg)
Doo-Sabin subdivision
As Catmull-clark subdivision surfaces generalize C2 bicubic spline surfaces,
Doo-Sabin subdivision surfaces generalize C1 biquadratic spline surfaces.
Tangent plane (C1) continuity is again achieved at the extrordinary points.
We will not give the details, just illustrate with the following example.
15
![Page 16: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/16.jpg)
Loop subdivision
This is a subdivision scheme for arbitrary triangle meshes, based on so-
called ‘box-splines’ (which is beyond the scope of this course), specifically
C2 quartic ‘box-splines.
16
![Page 17: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/17.jpg)
In this scheme we only compute vertex points and edge points, so there are
only two masks. After one subdivision step each former triangle is replaced
by four, a so-called 1-4 split.
Suppose we have the situation of the figure below.
e4e
3
2en−1
e1
n−1v
v
en4
n−1
n−1
e
e
2en
n
n5
1
en3
n−1
n−15
e
n
Here the number N of neighbouring triangles is 5. The ‘canonical’ case is
N = 6 in which case the scheme reduces to ‘box-spline’ subdivision, yielding
a C2 surface. The algorithm has just two steps.
17
![Page 18: Lecture 9: Subdivision surfaces · Subdivision surfaces These are generated by iterative reflnement of a polygonal mesh, usually with four-sided faces (quadrilateral meshes) or three-sided](https://reader034.vdocument.in/reader034/viewer/2022050313/5f75ac9178f27303a768f7eb/html5/thumbnails/18.jpg)
Step 1. Compute the new edge points by the rule
eni =
1
8(3vn−1 + 3en−1
i + en−1
i−1 + en−1
i+1 ).
Step 2. Compute the new vertex points. The rule for ‘box-splines’ in the
case N = 6 is
vn =5
8vn−1 +
3
8
(1
6
6∑
i=1
en−1
i
)
.
Loop proposed the generalization
vn = αNvn−1 + (1 − αN )( 1
N
N∑
i=1
en−1
i
)
,
and showed that with the weighting
αN =(3
8+
1
4cos(2π/N)
)2
+3
8,
the limit surface is C1 at the extraordinary points. The surface is a gener-
alization of a box-spline surface because α6 = 5
8.
18