Subdivision Surfaces
Catmull-Clark Subdivision
Algorithm Overview
- only quad meshes
- perform first a 1-to-4 face split
- update position of old and new vertices, i.e. it is approximating
After a 1-to-4 split of the faces, vertices are denoted as
- vertex-vertex, are the old input vertices
- edge-vertex, are new vertices at the edge midpoint
- face-vertex, are new vertices at the face midpoint
The Subdivision Algorithm
- 1-to-4 split: add face-vertices and edge-vertices
- set face-vertices to be the average of the old vertices of the face
-
set the edge-vertices to be the average of the adjacent face-vertices and
the two old endpoints of the edge
- update the position of \(\mathbf{v}_{old}\) to \(\mathbf{v}_{new}\) as follows
(\(N\) is the valence)
\[
\begin{align*}
v_{new} &= \frac{1}{N}\cdot F + \frac{2}{N}\cdot E + \frac{N-3}{N}\cdot v_{old} \\
E &= \frac{1}{N} \cdot \sum_{i=1}^{N} \frac{v_i + v_{old}}{2} \\
F &= \frac{1}{N} \cdot \sum_{i=1}^{N} v_{face_{i}} \\
\end{align*}
\]
The JavaScript Code