On-Line Geometric Modeling Notes

Bicubic Uniform B-Spline Surface Refinement


Overview

Subdivision surfaces are based upon the binary subdivision of the uniform B-spline surface. In general, they are defined by a initial polygonal mesh, along with a subdivision (or refinement) operation which, given a polygonal mesh, will generate a new mesh that has a greater number of polygonal elements, and is hopefully ``closer'' to some resulting surface. By repetitively applying the subdivision procedure to the initial mesh, we generate a sequence of meshes that (hopefully) converges to a resulting surface. As it turns out, this is a well known process when the mesh has a ``rectangular'' structure and the subdivision procedure is an extension of binary subdivision for uniform B-spline surfaces.

Ed Catmull and Jim Clark, while still graduate students at the University of Utah, sought to extend Doo and Sabin's algorithm to bicubic surfaces. Since the methods of Doo-Sabin is based upon the binary subdivision of the uniform bi-quadratic B-spline patches, Catmull and Clark believed that study of the cubic case would lead to a better subdivision surface generation scheme.

For a postscript version of these notes look here.


A Matrix Equation for the Bicubic Uniform Spline Surfaces  

Consider the bicubic uniform B-spline surface tex2html_wrap_inline859 defined by the tex2html_wrap_inline861 array of control points
displaymath36
where
displaymath57
where M is the tex2html_wrap_inline865 matrix
displaymath65
The control point mesh for such a patch is shown in the figure below.

tex2html_wrap957


Subdividing the Bicubic Patch

The bicubic uniform B-spline patch can be subdivided into four subpatches, which can be generated from 25 unique sub-control points. We focus on the subdivision scheme for only one of the four (the subpatch corresponding to tex2html_wrap_inline867), as the others will follow by symmetry. The following figure illustrates the 25 points produced by subdividing into four subpatches. We have outlined the initial subpatch that we consider below. It should be noted that the nine ``interior'' control points are utilized by each of the four subpatch components of the subdivision.

tex2html_wrap959

This subpatch can be generated by reparameterizing the surface by the variables u' and v', where tex2html_wrap_inline873 and tex2html_wrap_inline875. Substituting these into the equation, we obtain
eqnarray81
where tex2html_wrap_inline877 and
displaymath167
Through this process, we have written the surface tex2html_wrap_inline879 as
displaymath179
for some tex2html_wrap_inline881 control point array P'. This implies that tex2html_wrap_inline885 is a uniform bicubic B-spline patch. The matrix S is typically called the ``splitting matrix'', and is straightforward to calculate. It is given by
displaymath187
By carrying out the algebra, we can calculate the control point array P' by
eqnarray194
and we obtain
eqnarray275

Each of these points can be classified into three categories - face points, edge points and vertex points - depending on each points relationship to the original control point mesh. The points tex2html_wrap_inline891, tex2html_wrap_inline893, tex2html_wrap_inline895 and tex2html_wrap_inline897, which are shown in the figure below

tex2html_wrap961

are called ``face'' points, and are calculated as the average of the four points that bound the respective face. If we define the face point tex2html_wrap_inline899 to be the average of the points tex2html_wrap_inline901, tex2html_wrap_inline903, tex2html_wrap_inline905 and tex2html_wrap_inline907, then we can rewrite the above equations with these face points substituted on the right-hand side, and obtain
eqnarray419
Simplifying these equations, we obtain
eqnarray521

In examining these equations, we see that the points tex2html_wrap_inline909, tex2html_wrap_inline911, tex2html_wrap_inline913, tex2html_wrap_inline915, tex2html_wrap_inline917, tex2html_wrap_inline919, tex2html_wrap_inline921 and tex2html_wrap_inline923, which are called ``edge'' points, are given as the average of four points - the two points that define the original edge and the two two new face points of the faces sharing the edge. This is shown in the following figure.

tex2html_wrap963

These edge points tex2html_wrap_inline925 can be calculated either as
displaymath633
or
displaymath641
depending on which side of the edge point the two faces lie. If we replace these edge points on the right-hand side of the equations above, we obtain
eqnarray649
The remaining four points, tex2html_wrap_inline927, tex2html_wrap_inline929, tex2html_wrap_inline931 and tex2html_wrap_inline933, as shown in the figure below

tex2html_wrap965

are called ``vertex points''. These points, as can be seen above, are somewhat complex, but after some reduction it can be seen that
displaymath724
where tex2html_wrap_inline935 is the average of the face points of the faces adjacent to the vertex point, tex2html_wrap_inline937 is the average of the midpoints of the edges adjacent to the vertex point and tex2html_wrap_inline939 is the corresponding vertex from the original mesh. For example, if we consider the point tex2html_wrap_inline941, then
eqnarray730

All sixteen points of the subdivision have now been characterized in terms of face points, edge points and vertex points, and a geometric method has been developed to calculate these points.


Extending this Subdivision Procedure to the Entire Patch

We note that all 25 of the points can actually be calculated in this manner, as for example tex2html_wrap_inline943 is a face point and can be calculated as the average of the four points bounding the face. In general, we call the mesh generated by the 25 points as a refinement of the original mesh. In this case, we can state the following rules to generate the points for the refinement of the surface:  

The process generated from these rules actually extends to arbitrary rectangular meshes, so we can perform this process again on our refined mesh of 25 elements, producing a second refinement of the original mesh. In this case, we know that this represents yet another subdivision and that eventually, if we keep refining, this ``limit mesh'' will converge to the original uniform B-spline surface.

Thus, this process gives us a sequence of meshes, each of which is a refinement of the mesh directly above, and which converges to the surface in the limit. For the purposes of rendering such a surface we can simply let the refinement process go until we have a mesh that is ``sufficiently close'' to the actual surface and then utilize the mesh for rendering purposes.


Summary

The subdivision of the bicubic uniform B-spline surface produces a simple procedure based upon face points, edge points and vertex points, and can be extended to be a refinement procedure for an extended mesh based upon a rectangular topology. Catmull and Clark were able to take this procedure and produce a refinement strategy that works on a mesh of arbitrary topology.


References

1
CATMULL, E., AND CLARK, J. Recursively generated B-spline surfaces on arbitrary topological meshes. Computer-Aided Design 10 (Sept. 1978), 350-355.


This document maintained by Ken Joy

Comments to the Author

All contents copyright (c) 1996, 1997
Computer Science Department,
University of California, Davis
All rights reserved.



Ken Joy
Thu Jul 24 11:09:06 PDT 1997