Go to: Attributes.

transform nodes are dagNodes that are used to group and transform other dagNodes. All dagNodes that are not transform nodes in Maya must exist as a child of some transform node.

#### Transformation Matrix (DAG)

transform nodes have many attributes that make up the final transformation matrix as represented by the matrix attribute. This breakdown provides animators fine control over the animation of these parameters. Therefore, it is necessary to describe the order in which these attributes are applied to build the final matrix attribute.

Note: matrices are post-multiplied in Maya. For example, to transform a point p from object-space to world-space you would need to post-multiply by the worldMatrix. (p' = p * wm)

```              -1                      -1
matrix = SP * S * SH * SP * ST * RP * RA * R * RP * RT * T
```
(where '*' denotes matrix multiplication and '-1' denotes matrix inversion'
```   SP = |  1    0    0    0 |     ST = |  1    0    0    0 |
|  0    1    0    0 |          |  0    1    0    0 |
|  0    0    1    0 |          |  0    0    1    0 |
| spx  spy  spz   1 |          | sptx spty sptz  1 |

S  = |  sx   0    0    0 |     SH = |  1    0    0    0 |
|  0    sy   0    0 |          | shxy  1    0    0 |
|  0    0    sz   0 |          | shxz shyz  1    0 |
|  0    0    0    1 |          |  0    0    0    1 |

RP = |  1    0    0    0 |     RT = |  1    0    0    0 |
|  0    1    0    0 |          |  0    1    0    0 |
|  0    0    1    0 |          |  0    0    1    0 |
| rpx  rpy  rpz   1 |          | rptx rpty rptz  1 |

RA = AX * AY * AZ

AX = |  1    0    0    0 |     AY = |  cy   0   -sy   0 |
|  0    cx   sx   0 |          |  0    1    0    0 |
|  0   -sx   cx   0 |          |  sy   0    cy   0 |
|  0    0    0    1 |          |  0    0    0    1 |

AZ = |  cz   sz   0    0 |     sx = sin(rax), cx = cos(rax)
| -sz   cz   0    0 |     sy = sin(ray), cx = cos(ray)
|  0    0    1    0 |     sz = sin(raz), cz = cos(raz)
|  0    0    0    1 |

Rotate:
If the rotationInterpolation attribute specifies quaternion
interpolation, use the following OpenMaya API calls to construct
the matrix:
Mquaternion q( rx, ry, rz, rw )
R  = q.asMatrix()

Otherwise, for Euler-angle rotation use:
R  = RX * RY * RZ  (Note: order is determined by rotateOrder)

RX = |  1    0    0    0 |     RY = |  cy   0   -sy   0 |
|  0    cx   sx   0 |          |  0    1    0    0 |
|  0   -sx   cx   0 |          |  sy   0    cy   0 |
|  0    0    0    1 |          |  0    0    0    1 |

RZ = |  cz   sz   0    0 |     sx = sin(rx), cx = cos(rx)
| -sz   cz   0    0 |     sy = sin(ry), cx = cos(ry)
|  0    0    1    0 |     sz = sin(rz), cz = cos(rz)
|  0    0    0    1 |

T  = |  1    0    0    0 |
|  0    1    0    0 |
|  0    0    1    0 |
|  tx   ty   tz   1 |
```

Node nameParentsClassificationMFn typeCompatible function sets
transformdagNodedrawdb/geometry/transformkTransformkBase
kNamedObject
kDependencyNode
kDagNode
kTransform

## Attributes (109)

Long name (short name)TypeDefaultFlags
`translate` (`t`) double3
 Translation.
`translateX` (`tx`) distance (double)0.0cm
 Translate X.
`translateY` (`ty`) distance (double)0.0cm
 Translate Y.
`translateZ` (`tz`) distance (double)0.0cm
 Translate Z.
`rotate` (`r`) double3
 Rotation.
`rotateX` (`rx`) angle (double)0.0deg
 Rotate X.
`rotateY` (`ry`) angle (double)0.0deg
 Rotate Y.
`rotateZ` (`rz`) angle (double)0.0deg
 Rotate Z.
`rotateOrder` (`ro`) enum0
 This attribute controls the order in which rx, ry, rz are applied in the transformation matrix. Valid values for this attribute are 0=xyz, 1=yzx, 2=zxy, 3=xzy, 4=yxz, 5=zyx.
`scale` (`s`) double3
 Scale.
`scaleX` (`sx`) double1.0
 Scale X.
`scaleY` (`sy`) double1.0
 Scale Y.
`scaleZ` (`sz`) double1.0
 Scale Z.
`shear` (`sh`) double3
 Shear.
`shearXY` (`shxy`) double0.0
 Shear XY.
`shearXZ` (`shxz`) double0.0
 Shear XZ.
`shearYZ` (`shyz`) double0.0
 Shear YZ.
`rotatePivot` (`rp`) double3
 Point about which to rotate.
`rotatePivotX` (`rpx`) distance (double)0.0cm
 Rotate pivot X.
`rotatePivotY` (`rpy`) distance (double)0.0cm
 Rotate pivot Y.
`rotatePivotZ` (`rpz`) distance (double)0.0cm
 Rotate pivot Z.
`rotatePivotTranslate` (`rpt`) double3
 Rotate pivot correction. Used when moving the rotate pivot point without affecting the overall transformation matrix.
`rotatePivotTranslateX` (`rptx`) distance (double)0.0cm
 Rotate translation X.
`rotatePivotTranslateY` (`rpty`) distance (double)0.0cm
 Rotate translation Y.
`rotatePivotTranslateZ` (`rptz`) distance (double)0.0cm
 Rotate translation Z.
`scalePivot` (`sp`) double3
 Point around which to scale.
`scalePivotX` (`spx`) distance (double)0.0cm
 Scale pivot X.
`scalePivotY` (`spy`) distance (double)0.0cm
 Scale pivot Y.
`scalePivotZ` (`spz`) distance (double)0.0cm
 Scale pivot Z.
`scalePivotTranslate` (`spt`) double3
 Scale pivot correction. Used to moving the scale pivot point without affecting the overall transformation matrix.
`scalePivotTranslateX` (`sptx`) distance (double)0.0cm
 Scale translation X.
`scalePivotTranslateY` (`spty`) distance (double)0.0cm
 Scale translation Y.
`scalePivotTranslateZ` (`sptz`) distance (double)0.0cm
 Scale translation Z.
`rotateAxis` (`ra`) double3
 Extra rotation to adjust the local axis prior to applying the rotate attribute.
`rotateAxisX` (`rax`) angle (double)0.0deg
 Rotate axis X.
`rotateAxisY` (`ray`) angle (double)0.0deg
 Rotate axis Y.
`rotateAxisZ` (`raz`) angle (double)0.0deg
 Rotate axis Z.
`transMinusRotatePivot` (`tmrp`) double3
 Attribute to extract the offset of the translation from the rotate pivot. The offset is in the same transformation space as the translate attribute which is parent-space. This value is typically used in expressions where it is subtracted from a position before setting the translation attribute. This causes the object to move so that the rotate pivot point is positioned at the desired position.
`transMinusRotatePivotX` (`tmrx`) distance (double)0.0cm
 Translation minus rotate pivot X.
`transMinusRotatePivotY` (`tmry`) distance (double)0.0cm
 Translation minus rotate pivot Y.
`transMinusRotatePivotZ` (`tmrz`) distance (double)0.0cm
 Translation minus rotate pivot Z.
`minTransLimit` (`mntl`) double3
 Translate minimum. Translation values less than this value will be clamped to this value.
`minTransXLimit` (`mtxl`) distance (double)-1cm
 Minimum translation X.
`minTransYLimit` (`mtyl`) distance (double)-1cm
 Minimum translation Y.
`minTransZLimit` (`mtzl`) distance (double)-1cm
 Minimum translation Z.
`maxTransLimit` (`mxtl`) double3
 Translate maximum. Translation values greater than this value will be clamped to this value.
`maxTransXLimit` (`xtxl`) distance (double)1cm
 Maximum translation X.
`maxTransYLimit` (`xtyl`) distance (double)1cm
 Maximum translation Y.
`maxTransZLimit` (`xtzl`) distance (double)1cm
 Maximum translation Z.
`minTransLimitEnable` (`mtle`) compoundn/a
 Enable translate minimum.
`minTransXLimitEnable` (`mtxe`) boolfalse
 Enable translate minimum X.
`minTransYLimitEnable` (`mtye`) boolfalse
 Enable translate minimum Y.
`minTransZLimitEnable` (`mtze`) boolfalse
 Enable translate minimum Z.
`maxTransLimitEnable` (`xtle`) compoundn/a
 Enable translate maximum.
`maxTransXLimitEnable` (`xtxe`) boolfalse
 Enable translate maximum X.
`maxTransYLimitEnable` (`xtye`) boolfalse
 Enable translate maximum Y.
`maxTransZLimitEnable` (`xtze`) boolfalse
 Enable translate maximum Z.
`minRotLimit` (`mnrl`) double3
 Rotate minimum. Rotation values less than this value will be clamped to this value.
`minRotXLimit` (`mrxl`) angle (double)-45deg
 Minimum rotation X.
`minRotYLimit` (`mryl`) angle (double)-45deg
 Minimum rotation Y.
`minRotZLimit` (`mrzl`) angle (double)-45deg
 Minimum rotation Z.
`maxRotLimit` (`mxrl`) double3
 Rotate maximum. Rotation values greater than this value will be clamped to this value.
`maxRotXLimit` (`xrxl`) angle (double)45deg
 Maximum rotation X.
`maxRotYLimit` (`xryl`) angle (double)45deg
 Maximum rotation Y.
`maxRotZLimit` (`xrzl`) angle (double)45deg
 Maximum rotation Z.
`minRotLimitEnable` (`mrle`) compoundn/a
 Enable rotate minimum.
`minRotXLimitEnable` (`mrxe`) boolfalse
 Enable rotate minimum X.
`minRotYLimitEnable` (`mrye`) boolfalse
 Enable rotate minimum Y.
`minRotZLimitEnable` (`mrze`) boolfalse
 Enable rotate minimum Z.
`maxRotLimitEnable` (`xrle`) compoundn/a
 Enable rotate maximum.
`maxRotXLimitEnable` (`xrxe`) boolfalse
 Enable rotate maximum X.
`maxRotYLimitEnable` (`xrye`) boolfalse
 Enable rotate maximum Y.
`maxRotZLimitEnable` (`xrze`) boolfalse
 Enable rotate maximum Z.
`minScaleLimit` (`mnsl`) double3
 Scale minimum. Scale values less than this value will be clamped to this value.
`minScaleXLimit` (`msxl`) double-1
 Scale minimum X.
`minScaleYLimit` (`msyl`) double-1
 Scale minimum Y.
`minScaleZLimit` (`mszl`) double-1
 Scale minimum Z.
`maxScaleLimit` (`mxsl`) double3
 Scale maximum. Scale values greater than this value will be clamped to this value.
`maxScaleXLimit` (`xsxl`) double1
 Scale maximum X.
`maxScaleYLimit` (`xsyl`) double1
 Scale maximum Y.
`maxScaleZLimit` (`xszl`) double1
 Scale maximum Z.
`minScaleLimitEnable` (`msle`) compoundn/a
 Enable scale minimum.
`minScaleXLimitEnable` (`msxe`) boolfalse
 Enable scale minimum X.
`minScaleYLimitEnable` (`msye`) boolfalse
 Enable scale minimum Y.
`minScaleZLimitEnable` (`msze`) boolfalse
 Enable scale minimum Z.
`maxScaleLimitEnable` (`xsle`) compoundn/a
 Enable scale maximum.
`maxScaleXLimitEnable` (`xsxe`) boolfalse
 Enable scale maximum X.
`maxScaleYLimitEnable` (`xsye`) boolfalse
 Enable scale maximum Y.
`maxScaleZLimitEnable` (`xsze`) boolfalse
 Enable scale maximum Z.
`geometry` (`g`) Genericn/a
 Geometry attribute used for positional constraints.
`xformMatrix` (`xm`) matrixidentity
 Local transformation matrix. Contains the same information as the matrix attribute on dagNode but it is stored in a format that can be interpolated easily.
`selectHandle` (`hdl`) double3
 Selection handle position for this node in object-space coordinates.
`selectHandleX` (`hdlx`) distance (double)0.0cm
 Selection handle X.
`selectHandleY` (`hdly`) distance (double)0.0cm
 Selection handle X.
`selectHandleZ` (`hdlz`) distance (double)0.0cm
 Selection handle Z.
`inheritsTransform` (`it`) booltrue
 Attribute that controls whether this transform inherits transformations from its parent transform. If this value is false then the transform will act as though it is in world-space. In other words, transformations to its parent will not affect the world-space position of this transform and the parentMatrix attribute on this transform will return the identity matrix. This is primarily used when grouping objects with their construction history to prevent double transformations on the output object.
`displayHandle` (`dh`) boolfalse
 Boolean indicating whether the selection handle for this transform should be displayed.
`displayScalePivot` (`dsp`) boolfalse
 Boolean indicating whether the scale pivot point for this transform should be displayed.
`displayRotatePivot` (`drp`) boolfalse
 Boolean indicating whether the rotate pivot point for this transform should be displayed.
`displayLocalAxis` (`dla`) boolfalse
 Boolean indicating whether the local rotation axis for this transform should be displayed.
`dynamics` (`dyn`) boolfalse
 When connected, this attribute indicates that this transform is part of a dynamics simulation.
`showManipDefault` (`smd`) enum0
 This attribute indicates the default manipulator that should be shown when this object is selected and the show manipulator tool is active. Valid values are 0=no default manipulator, 1=translation, 2=rotation, 3=scale. 4=transform, 5=global default, 6=smart, 7=specified
`specifiedManipLocation` (`sml`) generic typed dataNULL
 When showManipDefault is set to specified, the node that is connected to this attribute will be used to determine the type of manipulator to show
`rotateQuaternion` (`rq`) double4
 Quaternion-based rotation (q=Xi+Yj+Zk+W).
`rotateQuaternionX` (`rqx`) double0.0
 X channel of quaternion-based rotation (q=Xi+Yj+Zk+W). This attribute is only valid if the object is driven by quaternion animation curves. It is not used to control the object's rotation, but can be used to query the rotation in quaternion space. To use this attribute, connect it to rotateX's associated paramCurve's ".rawValue" attribute.
`rotateQuaternionY` (`rqy`) double0.0
 Y channel of quaternion-based rotation (q=Xi+Yj+Zk+W). This attribute is only valid if the object is driven by quaternion animation curves. It is not used to control the object's rotation, but can be used to query the rotation in quaternion space. To use this attribute, connect it to rotateY's associated paramCurve's ".rawValue" attribute.
`rotateQuaternionZ` (`rqz`) double0.0
 Z channel of quaternion-based rotation (q=Xi+Yj+Zk+W). This attribute is only valid if the object is driven by quaternion animation curves. It is not used to control the object's rotation, but can be used to query the rotation in quaternion space. To use this attribute, connect it to rotateZ's associated paramCurves ".rawValue" attribute.
`rotateQuaternionW` (`rqw`) double0.0
 W channel of quaternion-based rotation (q=Xi+Yj+Zk+W). This attribute is only valid if the object is driven by quaternion animation curves. To use this attribute, connect it to one is the rotation animCurve's ".quaternionW" attributes.
`rotationInterpolation` (`roi`) enum1
 This attribute is deprecated and not being used at all.