Basis SOP


The Basis SOP provides a set of operations applicable to the parametric space of spline curves and surfaces. The parametric space, also known as the "domain" of a NURBS or Bzier primitive, is defined by one basis in the U direction and, if the primitive is a surface, another basis in the V direction. The size of the domain is given by the values of the knots that make up the basis.


The Basis SOP contains both ratio-preserving and non ratio-preserving operations.

If the basis reparameterization does not change the distance ratios between knots, the shape of a NURBS primitive is not affected. If the ratios are not preserved, however, a NURBS primitive will change shape in the area influenced by the modified knots; furthermore, if the primitive is a NURBS or Bzier surface, any profiles it may contain will be affected as well.

For more information about bases and knots see Breakpoints, Knots, and Spline Basis in the Geometry Types Guide.


Parameters - Page

Group group - Group of spline primitives (accepts patterns, as described in: Scripting Guide). Non-spline types are ignored.

Two sets of pages follow, one for each parametric direction (U and V). In each set the operations are applied in tab order, starting from the left: Parameterization, Mapping, and then raising the spline Order. To disable all the operations of a set, toggle off the U or V check mark above it. The V set is meaningful only for spline surfaces, and is ignored otherwise. Channel names are given for both the U and V pages.

Edit the U Basis ubasis -

Parameters - Parameterize Page

These operations on this page are not shape-preserving.

Parameterization uparmtype - -

  • Unchanged nochange - Does not change the basis.
  • Uniform uniform - Distributes all the knots evenly, maintaining the basis origin and length. Recommended only for regular shapes.
  • Chord Length chord - Computes the knot ratios based on the distances between successive CVs. This is the most common and most effective parameterization method.
  • Centripetal centripetal - Similar to the chord length method. Recommended for shapes containing sharp turns.
  • Manual: Single manualone - Loads the basis with the knots listed in the "Knot Sequence" below. If the SOP input contains several primitives, only the basis of the first spline primitive will be affected.
  • Manual: Propagated manualall - Same as above + it copies the basis to the basis of all the other spline primitives in the model or in the group. Using this feature on curves that have the point count and degree will generate cleaner surfaces, i.e. surfaces with fewer isoparms.
  • Knotslide slide - Shift clusters of knots within the basis. See Knotslide (From Paramaterization Menu) for discussion.

Knot Sequence uknots - The basis of the first spline primitive in the input loads its knot sequence with the data specified in this field when the Parameterization is set to Manual. The values must be in ascending order, and their total count must match the number of knots in the basis. To ensure an exact count, click on the Read Basis button to read the original knot sequence into this field.

Note: Bzier bases cannot have repeated knots. NURBS bases accept repeated knots as long as the knot multiplicity does not exceed the degree of the basis. The first two and last two knots of a NURBS basis must be identical.

Read Basis uread - Loads the original knots of the basis into the Knot Sequence field when the Parameterization type is Manual.

Range urange - - Range specifies the domain interval to be shifted. All the knots captured in this range are shifted by the same amount as far as the closest neighbouring knot on either side.

  • urange1 -
  • urange2 -

Bias ubias - Bias indicates the direction and the amount of translation. A Bias of 0.5 does not displace the knots at all. As the Bias decreases, the knot cluster migrates closer to its left-neighbouring knot. A Bias greater than 0.5 forces a migration to the right.

Sometimes a Bias of 0 or 1 does not clamp the knot cluster to the closest neighbouring knot. The reason for this behaviour is that the knot multiplicity cannot be allowed to exceed the degree of the basis. For example, an order 4 (degree 3, or "cubic") spline can have at most 3 identical knots in sequence. When sliding the knot of a NURBS basis, a larger area of that spline is affected. This may create the impression than more knots than those in the cluster are being displaced.

Parameters - Map Page

The operations contained on this page are shape-preserving.

Concatenate uconcat - Indicates whether the bases of the input spline primitives should be concatenated such that the last knot of the first primitive coincides with the first knot of the second primitive, and so on. This operation is performed before the ones below it, thus allowing a whole set of bases to be mapped onto a given interval (usually [0,1]) while enforcing basis continuity.

Origin udoorigin - The new origin of the basis, or the origin of the cummulated bases if Concatenation is On.

Origin uorigin -

Length udolength - The new length of the basis, or the total length of the cummulated bases if Concatenation is On. The Length, which represents the distance between the first and last knot, must be greater than zero.

Length ulength -

Scale udoscale - The multiplier applied to the basis starting at the basis origin. The Scale must be greater than zero.

Scale uscale -

Parameters - Order Page

Raise to uraise - The only operation here is raising the order (or degree) of the spline basis. Valid orders range from 2 to 11. Orders lower than the current spline order are ignored. The operation preserves the shape of the primitive.

Production Tip: Before applying a spline-based texture projection with the Texture SOP, remap the U and/or V bases of the spline surface between 0 and 1 to ensure a complete mapping of the texture. If a single texture map must be shared by several surfaces, the surface bases should be concatenated prior to being remapped.

Raise U to orderu -

Edit the V Basis vbasis -

Parameters - Parameterize Page

Parameterization vparmtype - -

  • Unchanged nochange -
  • Uniform uniform -
  • Chord Length chord -
  • Centripetal centripetal -
  • Manual: Single manualone -
  • Manual: Propagated manualall -
  • Knotslide slide -

Knot Sequence vknots -

Read Basis vread -

Range vrange - -

  • vrange1 -
  • vrange2 -

Bias vbias -

Parameters - Map Page

Concatenate vconcat -

Origin vdoorigin -

Origin vorigin -

Length vdolength -

Length vlength -

Scale vdoscale -

Scale vscale -

Parameters - Order Page

Raise to vraise -

Raise V to orderv -

Operator Inputs

  • Input 0 -

TouchDesigner Build: