Basis SOP

From TouchDesigner 088 Wiki

Summary

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.


BasisSOP.gif

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.

PythonIcon.png basisSOP_Class

Parameters

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.

Parameters - Parameterize Page

These operations on this page are not shape-preserving.

Parameterization

  • Unchanged - Does not change the basis.
  • Uniform - Distributes all the knots evenly, maintaining the basis origin and length. Recommended only for regular shapes.
  • Chord length - Computes the knot ratios based on the distances between successive CVs. This is the most common and most effective parameterization method.
  • Centripetal - Similar to the chord length method. Recommended for shapes containing sharp turns.
  • Manual:Single - 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 - 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 - Shift clusters of knots within the basis. See Knotslide (From Paramaterization Menu) for discussion.

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

Knot Sequence (Unlabeled) - 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.

Knotslide (From Paramaterization Menu) - Allows individual knots or clusters of knots to be shifted within the space of the basis to which they belong. This provides a more interactive method than Manual reparameterization. When Knotslide is enabled in the Parameterization menu, two fields become available:

  • Range /urange1 /urange2 - 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.
  • 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 - 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 /uorigin /vorigin - The new origin of the basis, or the origin of the cummulated bases if Concatenation is On.

Length /ulength /vlength - 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.

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

Parameters - Order Page

Raise to /orderu /orderv - 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.

See Also