Go to: Related nodes. Attributes.

This node implements an orientConstraint. Each constraint has a set of targets that are connected under the target attribute, a single constrained object that is connected to the constraint* attributes, and possibly other information to help compute the correct results. In the case of the orientConstraint, there is no other information.

The orientConstraint 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: targetRotate, targetRotateOrder, targetParentMatrix, and targetWeight.

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

orientConstraint attribute connected to
targetRotate rotate
targetRotateOrder rotateOrder
targetJointOrient jointOrient (joints only)
targetParentMatrix parentMatrix[i]
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 orientation.

The orientConstraint node uses these inputs to compute the world space orientation of each target object. It then computes a weighted average of the these orientations in quaternion space. This weighted average is called the target orientation.

The constrained object is connected to the constraint* attributes. For an orientConstraint, the attributes constraintRotateOrder, constraintJointOrient, and constraintParentInverseMatrix are inputs to the orientConstraint. The attribute constraintRotate is the only output.

The orientConstraint node computes an output rotation value such that the orientation of the constrained object matches the target orientation.

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
orientConstraintconstraintanimationkOrientConstraintkBase
kNamedObject
kDependencyNode
kDagNode
kTransform
kConstraint
kOrientConstraint

## Attributes (46)

Long name (short name)TypeDefaultFlags
`target` (`tg`) compoundn/a
 bundle of matrix, input position, and weight
`targetRotate` (`tr`) double3
 input orientation
`targetRotateX` (`trx`) angle (double)0.0deg
 input X orientation
`targetRotateY` (`try`) angle (double)0.0deg
 input Y orientation
`targetRotateZ` (`trz`) angle (double)0.0deg
 input Z orientation
`targetRotateOrder` (`tro`) enum0
 Input target object rotate order value.
`targetJointOrient` (`tjo`) double3
 input joint orientation
`targetJointOrientX` (`tjox`) angle (double)0.0deg
 input X joint orientation
`targetJointOrientY` (`tjoy`) angle (double)0.0deg
 input Y joint orientation
`targetJointOrientZ` (`tjoz`) angle (double)0.0deg
 input Z joint orientation
`targetParentMatrix` (`tpm`) matrixidentity
 input world position
`targetWeight` (`tw`) double1.0
 input weight for the position
`targetRotateCached` (`ctr`) double3
 Cached orientation. This attribute is used internally by the constraint and should not be modified by the user.
`targetRotateCachedX` (`ctrx`) angle (double)0.0deg
 cached X orientation
`targetRotateCachedY` (`ctry`) angle (double)0.0deg
 cached Y orientation
`targetRotateCachedZ` (`ctrz`) angle (double)0.0deg
 cached Z orientation
`lastTargetRotate` (`lr`) double3
 Last computed orientation, helps interpolator avoid flips
`lastTargetRotateX` (`lrx`) angle (double)0.0deg
 X component of last computed orientation
`lastTargetRotateY` (`lry`) angle (double)0.0deg
 Y component of last computed orientation
`lastTargetRotateZ` (`lrz`) angle (double)0.0deg
 Z component of last computed orientation
`constraintParentInverseMatrix` (`cpim`) matrixidentity
 parent inverse matrix of the object
`constraintRotateOrder` (`cro`) enum0
 Input constrained object rotate order value.
`constraintJointOrient` (`cjo`) double3
 Input constrained object joint orient value.
`constraintJointOrientX` (`cjox`) angle (double)0.0deg
 Input constrained object joint orient X value.
`constraintJointOrientY` (`cjoy`) angle (double)0.0deg
 Input constrained object joint orient Y value.
`constraintJointOrientZ` (`cjoz`) angle (double)0.0deg
 Input constrained object joint orient Z value.
`scaleCompensate` (`ssc`) booltrue
 Indicates whether to compensate for the scale of the parent joint.
`inverseScale` (`is`) double3
 Input constrained object scale of the parent joint.
`inverseScaleX` (`isx`) double1.0
 X component of aParentScale.
`inverseScaleY` (`isy`) double1.0
 Y component of aParentScale.
`inverseScaleZ` (`isz`) double1.0
 Z component of aParentScale.
`constraintRotate` (`cr`) double3
 output orientation
`constraintRotateX` (`crx`) angle (double)0.0deg
 output X orientation
`constraintRotateY` (`cry`) angle (double)0.0deg
 output Y orientation
`constraintRotateZ` (`crz`) angle (double)0.0deg
 output Z orientation
`offset` (`o`) double3
 object offset
`offsetX` (`ox`) angle (double)0.0deg
 object X offset
`offsetY` (`oy`) angle (double)0.0deg
 object Y offset
`offsetZ` (`oz`) angle (double)0.0deg
 object Z offset
`restRotate` (`rsrr`) double3
 rest orientation
`restRotateX` (`rrx`) angle (double)0.0deg
 rest X orientation
`restRotateY` (`rry`) angle (double)0.0deg
 rest Y orientation
`restRotateZ` (`rrz`) angle (double)0.0deg
 rest Z orientation
`interpType` (`int`) enum1
 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 orient 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`) integer0
 This attribute controls the interpolation type when the interpType attribute is set to "cache". The cache is not usually necessary, except when the orient 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.
`useOldOffsetCalculation` (`uooc`) boolfalse
 Turning this on switches the offset calculation from computing an offset rotation matrix, to simply adding the individual offset values to the x, y, and z rotation value computed by the constraint.