The final project (chapter 1) of my PhD thesis became a behemoth of a paper. This was unavoidable but unfortunate, because the original idea and the final code are relatively simple and straight-forward. So in a few easy-to-digest blog posts, I will highlight the motivation, approach, and final code that might otherwise be difficult to extract from the paper.
Subdivision surfaces have been around for decades, and their theoretical properties are pretty well understood. In practice, Catmull-Clark subdivision has become the de-facto standard: it is quad-based, which compared to triangle-based subdivision allows for a more natural way of modeling for artists. And it reduces to uniform B-Splines if there are no poles (i.e. vertices with valence other than 4) in the mesh, which are the gold standard of ‘good smooth surfaces’.
At poles, however, the surface smoothness goes down from to continuity. This is noticable in certain situations and lighting conditions, especially with animated surfaces, and so artists generally try to use as few poles as possible, and place them in inconspicuous locations.
Generally speaking, poles are used in three circumstances:
- to resolve topology: any quad mesh without boundaries and genus will have at least one pole. it is topologically impossible to e.g. construct a sphere (genus 0) without poles.
- to align edge lines along principal curvature directions (e.g. rings around the mouth or eyes of a face). This is especially important if the mesh is animated.
- to increase or decrease the vertex density locally. Some feature rich areas require significantly more vertices than others.
While the first two cases create fairly predictable mesh topologies (and thus are fairly easy to construct), the third one quickly enters the world of black magic. I am fascinated how artists develop an intuition of how to push poles around and resolve global topological constraints. You can see a rule-book of sorts here.
T-splines lifted the grid-topology restriction on B-Splines by allowing T-joints, i.e. allowing one quad to neighbor two quads along the same edge.
The main problem that had to be resolved is that of recovering the nice properties of B-Splines, most importantly partition of unity: summing up all basis functions on the mesh results in a function that is everywhere identical to one. As it turns out, we get partition of unity for free if we accept certain restrictions on the location of two perpendicular T-joints. The subset of T-splines that obey this restriction are called analysis-suitable T-splines, and are the basis of our scheme.
The theoretical properties of analysis-suitable T-splines are a field of current research, and it’s a new and exciting field. But similar to B-Splines, the only allowed mesh topology are regular T-grids: poles are not allowed. This restriction comes from the patch-centric view, which makes incorporating poles very hard.
We say a subdivision scheme reproduces a patch construction if the limit surface of the subdivision scheme is identical to the patches defined by the same control points. Our new T-subdivision scheme reproduces analysis-suitable T-splines exactly (if there is at most one T-joint per edge) – and hence nonuniform B-Splines as well. On the other hand they also reproduce Catmull-Clark subdivision. Moreover you can mix and match T-joints and poles as you wish, as long as the analysis-suitable condition is not violated.
This is the first subdivision scheme that can do that. The only other scheme that attempted to do something similar was T-NURCCS. It was a hybrid, using a patch-based approach in the vicinity of T-joints, and subdivision near poles, requiring enough separation between poles and T-joints. Most importantly though, the implementation of such a hybrid scheme is much more involved than our pure subdivision scheme.