Go to: Related nodes. Attributes.

This node implements a parentConstraint. Each constraint has a set of targets that are connected under the target attribute and a single constrained object that is connected to the constraint* attributes.

The parentConstraint node can have any number of target inputs. Each target is connected to attributes inside a single element of the target attribute. For example, the first target object would be connected elements of target[0], the second target object would be connected to elements of target[1], etc. The elements of each target are: targetTranslate, targetRotate, targetScale, targetRotatePivot, targetRotateTranslate, targetParentMatrix, targetRotateOrder, targetOffsetRotate, targetOffsetTranslate, and targetWeight.

The elements of each target are normally connected to the target objects as follows:

parentConstraint attribute connected to
targetTranslate translate
targetRotate rotate
targetScale scale
targetRotateOrder rotateOrder
targetRotatePivot rotatePivot
targetRotateTranslate rotatePivotTranslate
targetParentMatrix parentMatrix[i]
targetOffsetTranslate set to constrained object's translational offset from target, in target's local space
targetOffsetRotate set to constrained object's rotational offset from target, in target's local space amd rotation order
targetWeight set to 1.0

The targetWeight attribute is not generally connected to the target object. Instead, it may be animated by other means to adjust the weighted average computation for the target parent. Similarly, targetOffsetTranslate and targetOffsetRotate are generally not connected to the target object, but rather a calculated to determine an appropriate offset from that target in the target's local space.

For each target, the parentConstraint node uses these inputs to first rotate the constrained object to match that of the target, then computes the world space position of the pivot point of the target. It then computes a weighted average of the these transformations.

The constrained object is connected to the constraint* attributes. The constraintRotatePivot, constraintRotateTranslate, constraintRotateOrder and constraintParentInverseMatrix are inputs to the pointConstraint. These values are used to determine counter-translations and -rotations which are used to compensate for any transformation induced by the constrained object's parent, changes to its rotate pivot, and so forth.

The attributes constraintTranslate and constraintRotate are the only outputs.

Although the all the constraint nodes inherit from transform, they do not actively use any of the attributes from transform.

Node nameParentsClassificationMFn typeCompatible function sets
parentConstraintconstraintanimationkParentConstraintkBase
kNamedObject
kDependencyNode
kDagNode
kTransform
kConstraint
kParentConstraint

Related nodes

parentConstraint, orientConstraint, scaleConstraint, poleVectorConstraint, geometryConstraint, tangentConstraint, normalConstraint, aimConstraint, lookAt

Attributes (76)

The following quick index only shows top-level attributes (too many attributes to show them all): constraintJointOrient (3), constraintParentInverseMatrix, constraintRotate (3), constraintRotateOrder, constraintRotatePivot (3), constraintRotateTranslate (3), constraintTranslate (3), interpCache, interpType, lastTargetRotate (3), restRotate (3), restTranslate (3), target (39)

Long name (short name)TypeDefaultFlags
target (tg) compoundn/aarrayoutputinputconnectablestorable
bundle of matrix, input position, and weight
targetParentMatrix (tpm) matrixidentityoutputinputconnectablestorable
input world position
targetWeight (tw) double1.0outputinputconnectablestorablekeyable
input weight for the position
targetRotateCached (ctr) double3outputinputconnectable
Cached orientation. This attribute is used internally by the constraint and should not be modified by the user.
targetRotateCachedX (ctrx) angle (double)0.0degoutputinputconnectable
cached X orientation
targetRotateCachedY (ctry) angle (double)0.0degoutputinputconnectable
cached Y orientation
targetRotateCachedZ (ctrz) angle (double)0.0degoutputinputconnectable
cached Z orientation
targetTranslate (tt) double3outputinputconnectablestorable
input translation
targetTranslateX (ttx) distance (double)0.0cmoutputinputconnectablestorable
input X translation
targetTranslateY (tty) distance (double)0.0cmoutputinputconnectablestorable
input Y translation
targetTranslateZ (ttz) distance (double)0.0cmoutputinputconnectablestorable
input Z translation
targetRotatePivot (trp) double3outputinputconnectablestorable
input rotate pivot
targetRotatePivotX (trpx) distance (double)0.0cmoutputinputconnectablestorable
input X rotate pivot
targetRotatePivotY (trpy) distance (double)0.0cmoutputinputconnectablestorable
input Y rotate pivot
targetRotatePivotZ (trpz) distance (double)0.0cmoutputinputconnectablestorable
input Z rotate pivot
targetRotateTranslate (trt) double3outputinputconnectablestorable
input rotate pivot translate
targetRotateTranslateX (trtx) distance (double)0.0cmoutputinputconnectablestorable
input X rotate pivot translate
targetRotateTranslateY (trty) distance (double)0.0cmoutputinputconnectablestorable
input Y rotate pivot translate
targetRotateTranslateZ (trtz) distance (double)0.0cmoutputinputconnectablestorable
input Z rotate pivot translate
targetOffsetTranslate (tot) double3outputinputconnectablestorable
Constrained object's translational offset from the target
targetOffsetTranslateX (totx) distance (double)0.0cmoutputinputconnectablestorablekeyable
Constrained object's x-translational offset from the target
targetOffsetTranslateY (toty) distance (double)0.0cmoutputinputconnectablestorablekeyable
Constrained object's y-translational offset from the target
targetOffsetTranslateZ (totz) distance (double)0.0cmoutputinputconnectablestorablekeyable
Constrained object's z-translational offset from the target
targetRotate (tr) double3outputinputconnectablestorable
input orientation
targetRotateX (trx) angle (double)0.0degoutputinputconnectablestorable
input X orientation
targetRotateY (try) angle (double)0.0degoutputinputconnectablestorable
input Y orientation
targetRotateZ (trz) angle (double)0.0degoutputinputconnectablestorable
input Z orientation
targetRotateOrder (tro) enum0outputinputconnectablestorable
Input target object rotate order value.
targetJointOrient (tjo) double3outputinputconnectablestorable
input joint orientation
targetJointOrientX (tjox) angle (double)0.0degoutputinputconnectablestorable
input X joint orientation
targetJointOrientY (tjoy) angle (double)0.0degoutputinputconnectablestorable
input Y joint orientation
targetJointOrientZ (tjoz) angle (double)0.0degoutputinputconnectablestorable
input Z joint orientation
targetOffsetRotate (tor) double3outputinputconnectablestorable
Constrained object's rotational offset from the target
targetOffsetRotateX (torx) angle (double)0.0degoutputinputconnectablestorablekeyable
Constrained object's x-rotational offset from the target
targetOffsetRotateY (tory) angle (double)0.0degoutputinputconnectablestorablekeyable
Constrained object's y-rotational offset from the target
targetOffsetRotateZ (torz) angle (double)0.0degoutputinputconnectablestorablekeyable
Constrained object's z-rotational offset from the target
targetScale (ts) double3outputinputconnectablestorable
Target's scaling. Used to properly determine constraintTranslate from the given target.
targetScaleX (tsx) double1.0outputinputconnectablestorable
Target's x scaling.
targetScaleY (tsy) double1.0outputinputconnectablestorable
Target's y scaling.
targetScaleZ (tsz) double1.0outputinputconnectablestorable
Target's z scaling.
constraintParentInverseMatrix (cpim) matrixidentityoutputinputconnectablestorable
inverse of the parent matrix of the object
lastTargetRotate (lr) double3outputinputconnectablestorable
Last computed orientation helps interpolator avoid flips
lastTargetRotateX (lrx) angle (double)0.0degoutputinputconnectablestorable
X component of last computed orientation
lastTargetRotateY (lry) angle (double)0.0degoutputinputconnectablestorable
Y component of last computed orientation
lastTargetRotateZ (lrz) angle (double)0.0degoutputinputconnectablestorable
Z component of last computed orientation
constraintRotatePivot (crp) double3outputinputconnectablestorable
object rotate pivot
constraintRotatePivotX (crpx) distance (double)0.0cmoutputinputconnectablestorable
object X rotate pivot
constraintRotatePivotY (crpy) distance (double)0.0cmoutputinputconnectablestorable
object Y rotate pivot
constraintRotatePivotZ (crpz) distance (double)0.0cmoutputinputconnectablestorable
object Z rotate pivot
constraintRotateTranslate (crt) double3outputinputconnectablestorable
object rotate pivot translate
constraintRotateTranslateX (crtx) distance (double)0.0cmoutputinputconnectablestorable
object X rotate pivot translate
constraintRotateTranslateY (crty) distance (double)0.0cmoutputinputconnectablestorable
object Y rotate pivot translate
constraintRotateTranslateZ (crtz) distance (double)0.0cmoutputinputconnectablestorable
object Z rotate pivot translate
constraintTranslate (ct) double30.0, 0.0, 0.0outputconnectable
output point position
constraintTranslateX (ctx) distance (double)0.0cmoutputconnectable
output X point position
constraintTranslateY (cty) distance (double)0.0cmoutputconnectable
output Y point position
constraintTranslateZ (ctz) distance (double)0.0cmoutputconnectable
output Z point position
restTranslate (rst) double30.0, 0.0, 0.0outputinputconnectablestorable
rest translation
restTranslateX (rtx) distance (double)0.0cmoutputinputconnectablestorable
rest x translation
restTranslateY (rty) distance (double)0.0cmoutputinputconnectablestorable
rest y translation
restTranslateZ (rtz) distance (double)0.0cmoutputinputconnectablestorable
rest z translation
constraintRotateOrder (cro) enum0outputinputconnectablestorable
Input constrained object rotate order value.
constraintJointOrient (cjo) double3outputinputconnectablestorable
Input constrained object joint orient value.
constraintJointOrientX (cjox) angle (double)0.0degoutputinputconnectablestorable
Input constrained object joint orient X value.
constraintJointOrientY (cjoy) angle (double)0.0degoutputinputconnectablestorable
Input constrained object joint orient Y value.
constraintJointOrientZ (cjoz) angle (double)0.0degoutputinputconnectablestorable
Input constrained object joint orient Z value.
constraintRotate (cr) double3outputconnectable
output orientation
constraintRotateX (crx) angle (double)0.0degoutputconnectable
output X orientation
constraintRotateY (cry) angle (double)0.0degoutputconnectable
output Y orientation
constraintRotateZ (crz) angle (double)0.0degoutputconnectable
output Z orientation
restRotate (rsrr) double3outputinputconnectablestorable
rest orientation
restRotateX (rrx) angle (double)0.0degoutputinputconnectablestorable
rest X orientation
restRotateY (rry) angle (double)0.0degoutputinputconnectablestorable
rest Y orientation
restRotateZ (rrz) angle (double)0.0degoutputinputconnectablestorable
rest Z orientation
interpType (int) enum1outputinputconnectablestorablekeyable
Interpolation type, used when weighting between more than one target. When there is only one target, no interpolation is used and this attribute is ignored. The meaning of the types of interpolation is as follows:
  • No Flip When constraining between multiple targets, this attribute prevents flipping. Since this attribute is dependent on the previous frame, it requires a runup to provide consistent results, or a cache can be created using the Create Cache button in the parent constraint attribute editor.
  • Average The quaternion average. This setting can cause flipping since the previous result is not taken into consideration. Use the "No Flip" setting in order to prevent flipping.
  • Shortest Use the shortest path between the targets.
  • Longest Use the longest path between the targets.
  • Cache Use the cached result.
interpCache (inc) integer0outputinputconnectablestorable
This attribute controls the interpolation type when the interpType attribute is set to "cache". The cache is not usually necessary, except when the parent constraint is controlled by multiple targets and "no flip" interpType is used to prevent flipping. The "no flip" calculation is dependent on the previous frame, so a cache is required to consistently provide identical results on a given frame.