Parameterization of NURBS curves and surfaces

 
 
 

What are parameters?

Parameters are the unique numeric values (like coordinates) of points on a curve or surface. Parameters let you refer to specific points along the length of a curve. The higher the parameter, the further is the point along the curve.

Just as points in space have three dimensions, called X, Y, and Z, the parameters of a point are measured along the one internal dimension (length) of the curve. We call this dimension U.

Since surfaces have two internal dimensions (length and width), we need another parameter (in addition to U) to specify a point on a surface. We call this parameter V.

Just as every point along the length of a curve has a U parameter, every point across a surface has U and V parameters.

What is parameterization?

The method the application uses to number the points along a curve is called the curve’s parameterization. There are two parameterization methods available: uniform and chord-length.

Each method has advantages and disadvantages depending on how the curve will be used. You can choose which parameterization method to use when you create a new curve, and you can rebuild existing curves to use a specific parameterization.

Different actions can create curves or surfaces with different parameterization methods, often as a user-configurable option. For example, the CV Curve Tool and EP Curve Tool use uniform knot spacing by default. The Pencil Tool uses chord length knot spacing.

Uniform

Uniform parameterization assigns integral parameter values to the edit points, and evenly distributes parameters along the spans between edit points. So the first edit point is always parameter 0.0, the second edit point is always 1.0, the third is always 2.0, and so on.

A bonus feature of uniform parameterization is that the parameter value of the last edit point is the also the number of spans in the curve. However, unlike chord-length parameterization, the parameters of a uniform curve have nothing to do with the actual length of the curve.

Though the default values for uniform parameterization range from 0 to the total number of spans, you can use Rebuild Curve/Rebuild Surface to change the range to 0 to 1. (The 0 to 1 scheme is common in other computer graphics packages. Some users may want to use it for the sake of familiarity.)

Chord-length

Chord-length parameterization assigns parameter 0.0 to the start of the curve, then increases the parameter value proportionally to the chord length, or the shortest linear distance, between the surrounding edit points.

Unlike uniform parameterization, the parameters of a chord-length curve are irregularly spaced between the edit points, and the edit points do not have integral parameters.

Comparison

Each parameterization method has advantages and disadvantages, depending on how you will use the curve or surface.

Type Pros Cons

Chord-length

Parameter value gives some indication of the point’s relative position along the curve.

Distributes curvature better.

Minimizes stretching and squeezing of textures.

Parameters are not obvious.

Surfaces built from chord-length curves can be more complex because of cross-knot insertion.

Uniform

Easy to reckon parameters (for example, 1.5 is about half-way between edit points at 1.0 and 2.0).

In many cases, interpolation between edit points is not as good.

Can lead to unpredictable stretching of textures during rendering.

Just as with degree, surfaces can have different parameterization methods for their U and V dimensions. For example, the U isoparms of a surface can be degree 3 with uniform parameterization, while the V isoparms are degree 1 with chord-length parameterization.

To avoid problems manipulating and texturing a joined surface, make sure the joined surfaces use the same parameterization (uniform or chord length). If both surfaces use uniform parameterization, make sure that both use the same parameter range (0 to 1 or 0 to total number of spans).

Viewing parameters

When you select a curve or surface point, the U and V (for surfaces) values are shown in the status line as you drag.