Page tree


Al's Car (from Toy Story 2) was modeled entirely with trimmed NURBS


Prior to the advent of subdivision surfaces, non-uniform rational b-splines (or NURBS) were the industry standard when it came to the creation of smooth surfaces.

Like subdivision surfaces, NURBS are inherently smooth surfaces and suffer none of the faceting artifacts that are associated with polygonal approximations. In fact, RenderMan will always efficiently render a NURB as a smooth surface. Unlike subdivision surfaces, however, NURBS have a inherent topological constraint: a NURB's control surface is a rectangular mesh of rows and columns. While this means a NURB's parametric space for texturing is easy to understand (it's a rectangle!), it also means that when creating a complex organic shape like a human character, it is now the job of the modeler to divide that complex shape into a collection of rectangular pieces, each of which is a separate NURB. Moreover, if more detail is required at some section of the mesh which requires the addition of extra knots (an intersection of a row and a column), additional rows and columns must be added across the entire NURB in order to satisfy the rectangular mesh constraint. This can very quickly lead to unwieldy models.

In order to help with these limitations, trimmed NURBS can be used. A trimcurve is an arbitrary region, specified in UV parametric space, that can be used to cut away the NURB. This feature is unique to NURBS. While this helps with creating complicated fillets and joins, trimming is expensive, prone to numerical error, and it can be difficult to maintain smoothness and absolute continuity at the trimcurve seam, especially if the model undergoes deformation during animation. Nonetheless, modeling programs that fully support trimmed NURBS have been and continue to be a viable workflow in conjunction with RenderMan.

It's also worth noting that NURBS remain the only modeling primitive (besides the built-in Sphere primitive) that can exactly and easily represent a sphere!