Transform CHOP

From TouchDesigner 099 Wiki


The Transform CHOP takes translate, rotate, and/or scale channels and transforms them using the transform parameters in the CHOP. It can be used to:

  • Change the position and orientation of an object.
  • Convert a set of transform channels with a certain transform order into an equivalent set of channels with a different transform order.
  • Change the direction, starting point and scale of motion capture data.

At present, only one transform format exists: the transform defined by 12 channels (tx ty tz, rx ry rz, sx sy sz, px py pz) and a transform order.

The Transform CHOP expects the input channels to have names that end in the above names. Frequently the input channels come from an Object CHOP or Fetch CHOP. Examples are:

  • geo1:tx geo1:ty geo1:tz geo1:rx ...
  • headtx heaty headtz headrx
  • tx ty tz rx ... (what you would get from a Fetch CHOP)

The above defines a transformation matrix. This is multiplied by the transform matrix defined on the Transform page, and the CHOP outputs modified translate/rotate/etc. channels.

The channels of a Transform CHOP are frequently exported back to objects.

To affect only one set of channels coming into the CHOP, use the Scope parameter on the Common page with a pattern like geo1:

PythonIcon.png transformCHOP_Class

Parameters - Transform Page

This page defines the matrix used to transform the channels. The parameters used to create this matrix are Transform Order, Rotate Order, and the Translate, Rotate, Scale and Pivot parameters.

Output Channels - Specify how the channels are output.

  • Translate/Scale/Rotate Channels - Output t[xyz], r[xyz], s[xyz] channels.
  • 4x4 Matrix - Output a 16 channels which are the 16 values of a 4x4 transformation matrix. The translate column is contained in the last 4 channels.

Matrix Operation - The input channels can be pre or post transformed by the transformation parameters. The pre-transformation is the same as using Pre-XForm parameters on a Geometry COMP. In mathematical terms, if we assume a multiply "vector on the right" convention (column vectors), a pre-transformation would be PreXForm * InputXForm, and a regular transform would be the opposite.

Use Rotation Hint - Turning this on and using the Hint parameter below allows you to specify approximate starting values for the rotation channels produced. This allows you to change the rotation channel solution to a specific starting point (e.g. for camera output control).

Hint - Specify approximate starting values for the rotation channels produced.

Parameters - Input Page

This page defines what the incoming channels' transform order is assumed to be. Using the incoming channels and the transform order here, a matrix for the incoming channels in built. It is then multiplied by the transformation matrix defined by the Transform page and output.

Any missing translation, rotation or scale channels will default to zero (or one in the case of scale).

Transform Order - The transform order of the input channels. If the channels are retrieved from an object, this should be set to the same transform order as the object.

Rotate Order - The rotation order of the input rotations.

Note: When creating rotation channels, the Transform and Object CHOPs will select values which minimize frame-to-frame discontinuities. The graphs will appear continuous and free of 180 degree shifts. The Transform CHOP can be used to smooth out rotation channels derived from outside sources, such as the origin() function.

Standard Options and Local Variables

$I - The current index