Go to: Related nodes. Attributes.

A joint is a transform which is the basic node of a kinematic skeleton. A hierarchy of joints is a kinematics skeleton. In a 3D view, a joint is drawn as a combination of three circles perpendicular to each other. If a joint is the child of another joint, a bone is drawn between them.

The joint node is derived from the transform node, so it inherits some of its basic transformation from its parent node (see the documentation for transform node for details). Many elements in the inherited transformation matrix have been suppressed so the following invariances are maintained:
        rotatePivot = 0
        rotatePivotTranslate = 0
        scalePivot = 0
        scalePivotTranslate = 0
        shear = 0
There are also attributes used only by joint nodes. The transformation matrix for a joint node is below.
        matrix = [S] * [RO] * [R] * [JO] * [IS] * [T]
(where '*' denotes matrix multiplication).
        [S]:  scale.
        [RO]: Rotate Orient (attribute name is rotateAxis).
        [R]:  rotate.
        [JO]: jointOrient.
        [IS]: parentScaleInverse.
        [T]:  translate.

Joint Attributes

The jointType attribute determines if a joint node is a ball joint, a universal joint, or a hinge joint. There are six different joint types: 'xyz', 'xy', 'yz', 'xz', 'x', 'y', and 'z'. If jointType is 'xyz', the joint is a ball joint (with three degrees of freedom). If jointType is 'xy', 'yz', or 'xz', it is a universal joint. If jointType is 'x', 'y', or 'z', it is a hinge joint. The rotation order of a joint node is determined by the transform node. The default jointType is 'xyz'.The dofMask attribute determines which degree of freedom is used in the ik solving process. The first 3 bytes of the value indicate the presence or absence of each of the 'x', 'y' and 'z' degrees of freedom, using the character values for "x", "y" and "z" respectively. The fourth byte indicates how many of the 3 degrees of freedom are present. Since the default jointType value is 'xyz', the default dofMask value is 0x78797a03: all three degrees of freedom are involved into the ik solving process. The other dofMask values are:
        0x78790002: for jointType 'xy';
        0x00797a02: for jointType 'yz';
        0x78007a02: for jointType 'xz';
        0x78000001: for jointType 'x';
        0x00790001: for jointType 'y';
        0x00007a01: for jointType 'z';
The jointOrient attribute defines the orientation of the joint node. It is different from the rotation orientation defined in the transform node. Modifying the jointOrient changes how scaling a joint behaves. Internally, jointOrient is stored as a quaternion. This means that if you set a value and then query it, you may get back different numbers. For example, if you set jointOrient to (360, 0, 0), you will read back (0, 0, 0).The segmentScaleCompensate attribute controls the use of the inverseScale attribute. If it is on, inverseScale is used to compute the joint's transformation matrix. If it is off, inverseScale is simply left out of the computation. The default is on.The inverseScale attribute is used to do the scale compensation. It is typically connected to the scale attribute of the joint's parent. The value of inverseScale is set by this connection to match the parent's scale value. However, when the matrix is computed, the inverse of the value is used. This means that if you set the inverseScale attribute to (1, 2, 3), the joint and its children will scale by (1, 1/2, 1/3).The stiffness attribute is used by ikSolvers to generate a resistance to a joint motion. It affects the inverse kinematic solution. The default is no stiffness (0.0 for all three components).The preferredAngle attribute defines the initial joint configuration used by a single chain ik solver to calculate the inverse kinematic solution. The values are set on joint creation. It can also be modified with the joint command or through the Skeletons menu.The minRotateDampRange and minRotateDampStrength are attributes to apply resistance to a joint rotation as it approaches the lower boundary of its rotation limits. This functionality allows joint motion to slow down smoothly until the joint reaches its rotation limits instead of stopping abruptly. The minRotateDampRange specifies when the deceleration should start, and the minRotateDampStrength defines the rate of deceleration.The maxRotateDampRange and maxRotateDampStrength are attributes which have the same functionality as above two attributes. But they apply to the upper boundary of the joint rotation limits.The bindPose attribute stores the transformation matrix in use at the time a skin is bound. The joint bind pose is created and saved when the bindSkin command is executed; it is undefined unless a bindSkin operation has been performed. The dagPose command resets the joint back to its bind pose easily and quickly.The bindRotation attribute stores the joint local rotation in use at the time a skin is bound.The bindRotateAxis attribute stores the joint rotate axis in use at the time a skin is bound. It is set when the skin is bound.The bindJointOrient attribute stores the joint orientation in use at the time a skin is bound. It is set when the skin is bound.The bindScale attribute stores the scale parameter for the joint in use at the time a skin is bound. It is also set when the skin is bound.The bindInverseScale attribute stores the inverse scale parameter of the joint in use at the time a skin is bound. It is set when the skin is bound.The bindSegmentScaleCompensate attribute stores the state of segment scale compensate of the joint in use at the time a skin is bound. It is also set when the skin is bound.
Node name Parents MFn type Compatible function sets
joint transform kJoint kBase
kNamedObject
kDependencyNode
kDagNode
kTransform
kJoint

Related nodes

ikSolver, ikMCsolver, ikSplineSolver, ikSCsolver, ikRPsolver, ikPASolver, ikSystem, ikEffector, ikHandle

Attributes (79)

The following quick index only shows top-level attributes (too many attributes to show them all): bindInverseScale (3), bindJointOrient (3), bindPose, bindRotateAxis (3), bindRotation (3), bindScale (3), bindSegmentScaleCompensate, dofMask, drawLabel, drawStyle, fkRotate (3), hikFkJoint, hikNodeID, ikRotate (3), inIKSolveFlag, inverseScale (3), isIKDirtyFlag, jointOrient (3), jointOrientType, jointType, jointTypeX, jointTypeY, jointTypeZ, maxRotateDampRange (3), maxRotateDampStrength (3), minRotateDampRange (3), minRotateDampStrength (3), otherType, preferredAngle (3), radius, segmentScaleCompensate, side, stiffness (3), type

Long name (short name) Type Default Flags
jointOrientType (jot) string "xyz" outputinputstorable
this type is used to determine the joint orientation when created.
jointType (jt) string "xyz" outputinputhidden
Joint type 'xyz', 'x', 'y', 'z', 'xy', 'yz', 'xz', .....
jointTypeX (jtx) bool true outputinputconnectablestorable
Joint dof has "X" component.
jointTypeY (jty) bool true outputinputconnectablestorable
Joint dof has "Y" component.
jointTypeZ (jtz) bool true outputinputconnectablestorable
Joint dof has "Z" component.
dofMask (dm) integer 0x78797a03 outputhidden
Determine which dofs are involved in IK.
jointOrient (jo) double3 outputinputconnectablestorable
Joint orient.
jointOrientX (jox) angle (double) 0.0deg outputinputconnectablestorable
Joint orientX.
jointOrientY (joy) angle (double) 0.0deg outputinputconnectablestorable
Joint orientY.
jointOrientZ (joz) angle (double) 0.0deg outputinputconnectablestorable
Joint orientZ.
segmentScaleCompensate (ssc) bool true outputinputconnectablestorable
Indicates whether to compensate for the scale of the parent joint.
inverseScale (is) double3 outputinputconnectablestorable
The scale of the parent joint.
inverseScaleX (isx) double 1.0 outputinputconnectablestorable
X component of aParentScale.
inverseScaleY (isy) double 1.0 outputinputconnectablestorable
Y component of aParentScale.
inverseScaleZ (isz) double 1.0 outputinputconnectablestorable
Z component of aParentScale.
stiffness (st) double3 outputinputconnectablestorable
Joint stiffness.
stiffnessX (stx) double 0.0 outputinputconnectablestorable
Joint stiffness X.
stiffnessY (sty) double 0.0 outputinputconnectablestorable
Joint stiffness Y.
stiffnessZ (stz) double 0.0 outputinputconnectablestorable
Joint stiffness Z.
preferredAngle (pa) double3 outputinputconnectablestorable
Joint preferred angle.
preferredAngleX (pax) angle (double) 0.0deg outputinputconnectablestorable
Joint preferred angle X.
preferredAngleY (pay) angle (double) 0.0deg outputinputconnectablestorable
Joint preferred angle Y.
preferredAngleZ (paz) angle (double) 0.0deg outputinputconnectablestorable
Joint preferred angle Z.
minRotateDampRange (ndr) double3 outputinputconnectablestorable
Joint min rotate damping range.
minRotateDampRangeX (ndx) angle (double) 0.0deg outputinputconnectablestorable
Joint min rotate damping range X.
minRotateDampRangeY (ndy) angle (double) 0.0deg outputinputconnectablestorable
Joint min rotate damping range Y.
minRotateDampRangeZ (ndz) angle (double) 0.0deg outputinputconnectablestorable
Joint min rotate damping range Z.
minRotateDampStrength (nst) double3 outputinputconnectablestorable
Joint min rotate damping strength.
minRotateDampStrengthX (nstx) double 0.0 outputinputconnectablestorable
Joint min rotate damping strength X.
minRotateDampStrengthY (nsty) double 0.0 outputinputconnectablestorable
Joint min rotate damping strength Y.
minRotateDampStrengthZ (nstz) double 0.0 outputinputconnectablestorable
Joint min rotate damping strength Z.
maxRotateDampRange (xdr) double3 outputinputconnectablestorable
Joint max rotate damping range.
maxRotateDampRangeX (xdx) angle (double) 0.0deg outputinputconnectablestorable
Joint max rotate damping range X.
maxRotateDampRangeY (xdy) angle (double) 0.0deg outputinputconnectablestorable
Joint max rotate damping range Y.
maxRotateDampRangeZ (xdz) angle (double) 0.0deg outputinputconnectablestorable
Joint max rotate damping range Z.
maxRotateDampStrength (xst) double3 outputinputconnectablestorable
Joint max rotate damping strength.
maxRotateDampStrengthX (xstx) double 0.0 outputinputconnectablestorable
Joint max rotate damping strength X.
maxRotateDampStrengthY (xsty) double 0.0 outputinputconnectablestorable
Joint max rotate damping strength Y.
maxRotateDampStrengthZ (xstz) double 0.0 outputinputconnectablestorable
Joint max rotate damping strength Z.
bindPose (bps) matrix identity outputinputconnectablestorablehidden
joint bind pose for binding skin. This attribute is connected to the dagPose node that stores the bindPose info for the joint. This attribute stores the world matrix of the joint at the time of the bind. The bindPose matrix is undefined if no bindSkin operation has been performed.
bindRotation (br) double3 outputinputhidden
This attribute is obsolete and is unused in versions past Maya1.0. It exists only for file format compatibility with Maya1.0 files. The dagPose node is now used to store bindPose data.
bindRotationX (brx) angle (double) 0.0deg outputinputhidden
obsolete local joint x rotation at time of bind
bindRotationY (bry) angle (double) 0.0deg outputinputhidden
obsolete local joint y rotation at time of bind
bindRotationZ (brz) angle (double) 0.0deg outputinputhidden
obsolete local joint z rotation at time of bind
bindJointOrient (bjo) double3 outputinputhidden
This attribute is obsolete and is unused in versions past Maya1.0. It exists only for file format compatibility with Maya1.0 files. The dagPose node is now used to store bindPose data.
bindJointOrientX (bjx) angle (double) 0.0deg outputinputhidden
obsolete joint orient x at time of bind
bindJointOrientY (bjy) angle (double) 0.0deg outputinputhidden
obsolete joint orient y at time of bind
bindJointOrientZ (bjz) angle (double) 0.0deg outputinputhidden
obsolete joint orient z at time of bind
bindRotateAxis (bra) double3 outputinputhidden
This attribute is obsolete and is unused in versions past Maya1.0. It exists only for file format compatibility with Maya1.0 files. The dagPose node is now used to store bindPose data.
bindRotateAxisX (brax) angle (double) 0.0deg outputinputhidden
obsolete bind rotate axis X.
bindRotateAxisY (bray) angle (double) 0.0deg outputinputhidden
obsolete bind rotate axis Y.
bindRotateAxisZ (braz) angle (double) 0.0deg outputinputhidden
obsolete bind rotate axis Z.
bindScale (bs) double3 outputinputhidden
This attribute is obsolete and is unused in versions past Maya1.0. It exists only for file format compatibility with Maya1.0 files. The dagPose node is now used to store bindPose data.
bindScaleX (bsx) angle (double) 57.3deg outputinputhidden
obsolete joint scale x at time of bind
bindScaleY (bsy) angle (double) 57.3deg outputinputhidden
obsolute joint scale y at time of bind
bindScaleZ (bsz) angle (double) 57.3deg outputinputhidden
obsolete joint scale z at time of bind
bindInverseScale (bis) double3 outputinputhidden
This attribute is obsolete and is unused in versions past Maya1.0. It exists only for file format compatibility with Maya1.0 files. The dagPose node is now used to store bindPose data.
bindInverseScaleX (bix) double 1 outputinputhidden
obsolete joint inverse scale x at time of bind
bindInverseScaleY (biy) double 1 outputinputhidden
obsolete joint inverse scale y at time of bind
bindInverseScaleZ (biz) double 1 outputinputhidden
obsolete joint inverse scale z at time of bind
bindSegmentScaleCompensate (bsc) bool true outputinputhidden
This attribute is obsolete and is unused in versions past Maya1.0. It exists only for file format compatibility with Maya1.0 files. The dagPose node is now used to store bindPose data.
isIKDirtyFlag (idf) bool false outputinputhidden
Intended for internal use only
inIKSolveFlag (isf) bool false outputinputhidden
Intended for internal use only
drawStyle (ds) enum 0 outputinputstorable
This attribute controls how the joint is drawn. The "bone" setting draws the joints as normal bones, as in previous releases. The "Multi-child as Box" draw style indicates that a single box will be drawn to represent the joint and its children, in case the joint has multiple children. The box size is chosen as a bounding box of the children joints. Typically the "bone" draw style is preferable if you are creating a complex skeletal hierarchy such as human ribs, while the "Multi-child as Box" draw style is preferable for representing a large bone with multiple children such as the pelvic bone. The "Circle" setting draw the joints as a simple circle, this may be useful for rigging to have that circle act as a control object. The circle will be drawn such that its base is perpendicular to the direction to the child bone. The CircleXY, CircleXZ, and CircleYZ settings allow the user to force the draw of the circle in a certain plane. This is useful to properly orient the circle for joints such as the hips which have multiple children. Stick draws the joint as a solid stick. Square is similar to Circle, but draws a square instead.
drawLabel (dl) bool false outputinputconnectablestorable
When enabled, the joint side and type attribute values are drawn as text next to the joint.
side (sd) enum 0 outputinputstorable
This attribute can be used to specify the joint's side in the puppet. This information is used when retargeting animation info from one hierarchy to another.
type (typ) enum 0 outputinputstorable
This attribute can be used to specify the joint's part in the puppet. This information is used when retargeting animation info from one hierarchy to another.
otherType (otp) string "jaw" outputinputstorable
When the puppetPart is set to "Other", this string should be used to describe the part type.
ikRotate (ikr) double3 outputinputhidden
IK Rotation. This is set by the ik solver.
ikRotateX (irx) angle (double) 0.0deg outputinputhidden
IK Rotate X.
ikRotateY (iry) angle (double) 0.0deg outputinputhidden
IK Rotate Y.
ikRotateZ (irz) angle (double) 0.0deg outputinputhidden
IK Rotate Z.
fkRotate (fkr) double3 outputinputhidden
FK Rotation.
fkRotateX (frx) angle (double) 0.0deg outputinputhidden
FK Rotate X.
fkRotateY (fry) angle (double) 0.0deg outputinputhidden
FK Rotate Y.
fkRotateZ (frz) angle (double) 0.0deg outputinputhidden
FK Rotate Z.
radius (radi) double 1.0 outputinputconnectablestorable
The joint's radius which, when multiplied by the global joint scaling factor, determines how wide the bone should be when displayed.
hikNodeID (hni) integer -1 outputinputconnectablestorablehidden
The HumanIK nodeId. This is for internal use by Maya and should never be modified manually.
hikFkJoint (hfk) Message n/a outputinputconnectablehidden
A message connection to the fk joint of an fbik system. This is for internal use by Maya and should never be modified manually.