Catmull-Clark Subdivision Algorithm
Zachary Ferguson
Step 1: For each face in the mesh, create a new vertex at the
center of the face.
-
Average the face vertices' x, y, and z values.
-
Create a new vertex with these x, y, and z (center vertex).
Step 2: For each edge in the mesh, create a new edge midpoint
vertex that is the average of the adjacent edge vertices and the adjacent face
vertices.
-
Sum the two adjacent edge vertices and the two adjacent face vertices
created in "Step 1".
-
Divide this sum by four to yield the new edge vertex.
Step 3: Update the original vertices to be an weighted average
of the surrounding face centres, new edge midpoints, and vertex.
-
Sum all of the face vertices for the faces that the vertex is part of,
then divide the sum by the number of edges connected to the vertex.
-
Sum all of the midpoints of the edges that the vertex is part of, then
multiply the sum by two and divide by the number of edges connected to the
vertex.
-
Multiply the vertex that is being updated by the number of edges
connected to the vertex minus three and then divide by the number of
edges connected to the vertex.
-
Update the vertex being updated to be the sum of the results from 1, 2,
and 3.