Maya Subdivision Surfaces 101

Introduction

This document introduces subdivision surfaces in a non-technical way, explaining their advantages for surface modelling - particularly compared with the existing surface representations of NURBS and Polygons - how they will appear to the user and how the user would interact with them. Note that there are a number of different implementations of subdivision surfaces, the one described here is called the Catmull Clark representation, and is the one that will be used in Maya.

What are subdivision surfaces?

The best way to think of a subdivision surface is to consider it a generalization of a B-spline surface that is not restricted to square-like base parametric surfaces, but can instead have any shape that a polygon model can have.


The above sphere is an example of a subdivision surface. The surface is drawn X-ray smooth shaded to show the CVs around the object. A few things are immediately noticable:

Why are they good?

Here are some attributes that might be considered desirable for surface representations: Here are what different surface types can provide in terms of the above attributes:

NURBSPolysSubdivs
Geometrically SmoothY Y
Arbitrary topology Y Y
Hierarchy Y

Subdivision surfaces combine the best properties of NURBS and polygons. However it is better to think of them as being enhanced NURBS rather than being enhanced polygons. Manipulating the CVs on a subdivision surface deforms the surface in a way that will be familiar to anyone who has modelled with NURBS surfaces. Subdivision surfaces provide most of the advantages of NURBS surfaces, with the addition of two important properties:

These two properties can be considered distinct, so are separated below.

The subdivision surface can be thought of as being a little like the result of a polygon smooth operation. When polygons are smoothed, the corners of the polygon model are progressively chopped off, leading to a smoother and smoother surface. However this is an infinite process, since it is always possible to smooth more. In a similar way, a subdivision surface is the end result of an infinite number of smoothing operations on an initial mesh object. The end result of an infinite number of subdivisions is called a limit surface A difference from the poly smooth operation is that the limit surface of a subdivision model is almost everywhere a uniform cubic B-spline surface. This is very important because it means that the subdivision surface is actually geometrically smooth in the same way that a B-spline surface is smooth, in contrast to a smoothed poly mesh which is always a faceted approximation to a smooth surface. As a result, subdivision surfaces provide the user with a tool that retains the smoothness properties of NURBS geometry while providing the extra advantages of arbitrary toplogy and multi-resolution editing.

Arbitrary toplogy

Compared with NURBS

NURBS are a powerful modelling tool that are suitable for many types of model generation. They generate smooth surfaces that are easy to work with. However NURBS surfaces are parametrically rectangular. That is they can be thought of as flexible and stretchable sheets, which can be pulled into any shape but still retain their rectangular toplogy. This means certain types of model cannot be generated with a single NURBS surface eg hands. Such objects must therefore be modelled with multiple NURBS surfaces, and this introduces complexity since these surfaces then have to join smoothly at their common boundaries, and retain that smoothness under deformation.

Compared with Polygons

In contrast to NURBS, polygons are able to model arbitrary topology objects without difficulty. However the underlying surface is always faceted.

Subdivision surfaces allow the arbitrary topology of polygons while retaining the smooth surface properties of NURBS. Note that the subdivision surface does not have to be closed - it can have any topology that a polygon mesh can have.

Hierarchical structure

As well as the rectangular topology restriction, NURBS have another disadvantage, in that it is difficult to add small features to large surfaces. To add a small feature onto a NURBS surface, extra isoparms must be inserted at that point. However these isoparms cross the whole surface, introducing rows of patches all the way across the surface, even in areas where it is not needed. This is commonly a problem when heads are modelled as single NURBS surfaces. To provide more detail around the nose, for example, extra isoparms are inserted which then wrap all the way around to the back of the neck. An extreme example is below, where the user wishes to add detail at a number of points diagonally across the surface. The end result is the surface at top right, although an ideal situation would only insert the detail where needed, as in the bottom figure:

Once these extra isoparms have been inserted into a NURBS surface (as at above right) it becomes difficult to make large scale smooth changes, since now a large number of CVs needs to be moved consistently in order to generate the required effect. As a results, deformation tools such as lattices are often used to provide simpler large scale control over a complex NURBS surface.

Subdivision surfaces in contrast allow the user to add small features onto large surfaces because they are hierarchical surfaces, that is they can be edited at a number of different levels of resolution without requiring insertion of extra detail all over the surface. Large scale changes and fine scale changes can be made by working with different sets of CVs that exist simultaneously on the surface.

These multiple distinct sets of CVs are a feature of subdivision surfaces, and take some getting used to. The CVs that are visible at first are called the base mesh, also called the coarsest level or level 0. There are actually an infinite number of levels of CVs available at finer levels. Here is an example of the same surface with CVs at the base mesh (top left) and the next three finer levels shown:

Clearly there are more CVs at finer levels, and therefore any given CV at a finer level will influence a smaller region of the surface. Thus when modelling an object made from a subdivision surface, the user can tweak CVs on the base mesh to make large scale changes to the model, and then move to finer levels to provide more detailed control over a smaller region. The user can move freely between the different levels applying tweaks to CVs. All previously applied tweaks will be preserved as the model is being edited.

The multiple levels of CVs can be a bit hard to understand. The base mesh is all that is needed to define a subdivision surface completely. This mesh contains all the CVs at the base level, and from these CVs the surface can be computed. Also from these CVs, the CVs at all finer levels can be computed, since there are well defined rules for the positions of CVs at a level given the positions of CVs at the coarser level. If a CV at a base level is moved, all CVs at finer levels close to this CV will also be moved. To ensure tweaks to CVs at finer levels are not lost when the user moves a CV at a coarser level, the tweaks on each CV are stored internally as offsets from their original position. This means that when a base CV is moved that causes a CV that has already been tweaked to move, the tweak will be reapplied after the move, so that all editing information is preserved.

An analogy

Imagine building a NURBS surface in Maya. Then rebuild that surface to a higher resolution with Keep Originals on. The end result is a pair of surfaces that look the same, but having different numbers of CVs. Imagine tweaking a CV on the original surface. There would be a large scale deformation on the original surface. In addition, the rebuilt surfaces would deform to produce exactly the same surface, since it is connected via history to the original surface. Now move a CV on the rebuilt surface. This would produce a more localised deformation on the surface than the result of moving the CV on the original surface. Now go back to the original surface and moving another CV. This would again produce a large scale deformation, which would be propagated to the rebuilt surfaces. However because tweaks to the rebuilt surface are stored in with that rebuilt surface, these tweaks would not be lost but would be added to the changes made to the surface as a result of the history propagation. Here is the above in pictures for a NURBS plane:


For each of these three pairs of surfaces the left surface is base surface, and the right surface has been rebuilt from the left surface with a greater density of isoparms:

  • Top row The original surface is deformed by raising the centre CV. This results in a large scale deformation which is matched exactly in the rebuilt surface at top right.

  • Middle row A small dimple is placed in the rebuilt surface by moving the middle CV on this surface.

  • Bottom row The left side of the original surface is raised. This effect is matched exactly in the rebuilt surface via history. In addition, the deformation applied to the rebuilt surface is also preserved.

Using the above process, the user can model a surface at different levels of resolution and be sure that all the tweaks applied at the different levels are preserved. Subdivision surfaces provide the same workflow, but it comes 'for free' since this hierarchical structure is built into the surface definition itself. There is only one surface (equivalent to the rightmost surface in the above example) but the CVs exist at a number of levels.

Another feature of the above NURBS example is that once the original surface is defined and the rebuild rules are specified, the positions of the CVs on all of the rebuilt surfaces are exactly defined as well. The user may tweak them, but the original positions are determined only by the original surface from which they are rebuilt. In the same way, the CVs on a finer level of a subdivision surface are defined exactly by the positions of the CVs at coarser levels, although they can still be tweaked.

Note that CVs exist all over the surface at all levels of detail. At first sight this might appear to lose the advantage of adding detail only where needed, as in the example picture at the top of this section. However since the positions of CVs at any level can be computed from the CVs at a coarser level plus any tweaks that were applied directly to that CV, we only need to store CVs that have been tweaked by the user from their original position. All other CV positions are defined by the base mesh, and can be computed only when they are needed.

Modelling with Subdivision surfaces compared with NURBS and polygons

In general a model created with subdivision surfaces will have far fewer surfaces that one created with NURBS. Because of the arbitrary topology and hierarchical properties of the subdivision surface, it is often not necessary to use multiple surfaces to create a model. This makes modelling work much easier, since there is less need to worry about operations such as trimming, stitching, aligning etc. Also deformer tools such as lattices will be less necessary. In some ways the base mesh is a more intuitive deformer than a lattice because the base mesh follows the shape of the surface, which is not necessarily true of a lattice.

Glossary

Extraordinary points These are points on the surface where the CV has more or less than 4 neighbouring CVs.

Base mesh The coarsest level of CVs that define a subdivision surface. Also known as the level 0 mesh.

Level CVs exist at an infinite number of levels, corresponding to different levels of resolution. The base mesh is the coarsest level. It is a good idea to refer to levels as "coarser" and "finer" rather than "higher" or "lower" since people have different ideas about which direction "higher" implies.

Limit surface The actual subdivision surface itself, which the result of an infinite number of subdivision operations.


Martin Watt