Go to: Related nodes. Attributes.
This node implements a tangentConstraint. 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 tangentConstraint, the additional information
is: aimVector, upVector, worldUpVector, worldUpMatrix, and
worldUpType.
The tangentConstraint 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: targetGeometry and targetWeight.The elements of each
target are normally connected to the target objects as follows:
tangentConstraint attribute |
connected to |
targetGeometry |
worldSpace |
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
constrained object is connected to the constraint* attributes. For
a tangentConstraint, the constraintTranslate,
constraintRotatePivot, constraintRotateTranslate,
constraintJointOrient, and constraintParentInverseMatrix are inputs
to the tangentConstraint. The attribute constraintRotate is the
only output.The tangentConstraint node uses the
constraintTranslate, constraintRotatePivot,
constraintRotateTranslate, and constraintParentInverseMatrix
attributes to compute the world space position of the pivot point
of the constrained object. Then, for each target geometry, the
closest point is found and the tangent at that point is computed.
Each tangent is then added into a weighted average vector and the
constrained object is oriented so that the aimVector (see below)
matches the weighted average vector.The additional
tangentConstraint inputs tell the constraint node how to aim the
constrained object. The aimVector attribute defines a vector in the
space of the constrained object that should be aligned with the
weighted average vector computed by the constraint. The upVector,
worldUpVector, worldUpMatrix, and worldUpType define how the
constrained object is rotated about the aimVector.The upVector
defines a vector in the space of the constrained object, very much
like the aimVector does. The constrained object is rotated so that
the aimVector matches the weighted average vector and so that the
upVector aligns as closely as possible with the computed world up
vector. The world up vector is determined by the worldUpType,
worldUpVector, and worldUpMatrix attributes.The attribute
worldUpType can have one of 5 values, which affects the calculation
of the world up vector as shown in the following table.
Mnemonic |
Value |
Description |
scene |
0 |
The upVector is aligned with the up axis of the scene and
worldUpVector and worldUpObject are ignored. |
object |
1 |
The upVector is aimed as closely as possible to the origin of
the space of the worldUpObject and the worldUpVector is
ignored. |
objectrotation |
2 |
The worldUpVector is interpreted as being in the coordinate
space of the worldUpObject, transformed into world space and the
upVector is aligned as closely as possible to the result. |
vector |
3 |
Default: The upVector is aligned with
worldUpVector as closely as possible and worldUpMatrix is
ignored. |
none |
4 |
No up vector is used in the computation of the orientation of
the constrained object; only the aim vector and the target curve's
tangents are used. Specifying an up vector can cause flipping to
occur when the constrained object's new orientation vector is close
to the up vector. If the worldUpType is instead set to none, this
flipping won't happen, at a loss of control over twisting. |
While setAttr requires the numeric values for the worldUpType
attribute, both numeric and mnemonic values are allowed by the
tangentConstraint command.Although the all the constraint nodes
inherit from transform, they do not actively use any of the
attributes from transform.
Node name |
Parents |
MFn type |
Compatible function sets |
tangentConstraint |
constraint |
kTangentConstraint |
kBase
kNamedObject
kDependencyNode
kDagNode
kTransform
kConstraint
kTangentConstraint |
Related nodes
aimConstraint, geometryConstraint, orientConstraint, normalConstraint, parentConstraint, pointConstraint, poleVectorConstraint, scaleConstraint, lookAt
Attributes (47)
aimVector, aimVectorX, aimVectorY, aimVectorZ, constraintJointOrient, constraintJointOrientX, constraintJointOrientY, constraintJointOrientZ, constraintParentInverseMatrix,
constraintRotate, constraintRotateOrder, constraintRotatePivot, constraintRotatePivotX, constraintRotatePivotY, constraintRotatePivotZ, constraintRotateTranslate,
constraintRotateTranslateX,
constraintRotateTranslateY,
constraintRotateTranslateZ,
constraintRotateX, constraintRotateY, constraintRotateZ, constraintTranslate, constraintTranslateX, constraintTranslateY, constraintTranslateZ, constraintVector, constraintVectorX, constraintVectorY, constraintVectorZ, restRotate, restRotateX, restRotateY, restRotateZ, target, targetGeometry, targetWeight, upVector, upVectorX, upVectorY, upVectorZ, worldUpMatrix, worldUpType, worldUpVector, worldUpVectorX, worldUpVectorY, worldUpVectorZ
Long name (short name) |
Type |
Default |
Flags |
|
target
(tg ) |
compound |
n/a |
|
|
targetGeometry
(tgm ) |
Generic |
n/a |
|
|
|
targetWeight
(tw ) |
double |
1.0 |
|
|
|
constraintParentInverseMatrix
(cpim ) |
matrix |
identity |
|
|
aimVector
(a ) |
double3 |
|
|
|
aimVectorX
(ax ) |
double |
1.0 |
|
|
|
aimVectorY
(ay ) |
double |
0.0 |
|
|
|
aimVectorZ
(az ) |
double |
0.0 |
|
|
|
upVector
(u ) |
double3 |
|
|
|
upVectorX
(ux ) |
double |
0.0 |
|
|
|
upVectorY
(uy ) |
double |
1.0 |
|
|
|
upVectorZ
(uz ) |
double |
0.0 |
|
|
|
worldUpVector
(wu ) |
double3 |
|
|
|
worldUpVectorX
(wux ) |
double |
0.0 |
|
|
|
worldUpVectorY
(wuy ) |
double |
1.0 |
|
|
|
worldUpVectorZ
(wuz ) |
double |
0.0 |
|
|
|
worldUpMatrix
(wum ) |
matrix |
identity |
|
|
worldUpType
(wut ) |
enum |
3 vector |
|
|
constraintTranslate
(ct ) |
double3 |
|
|
|
constraintTranslateX
(ctx ) |
distance
(double) |
0.0cm |
|
|
|
constraintTranslateY
(cty ) |
distance
(double) |
0.0cm |
|
|
|
constraintTranslateZ
(ctz ) |
distance
(double) |
0.0cm |
|
|
|
constraintRotatePivot
(crp ) |
double3 |
|
|
|
constraintRotatePivotX
(crpx ) |
distance
(double) |
0.0cm |
|
|
|
constraintRotatePivotY
(crpy ) |
distance
(double) |
0.0cm |
|
|
|
constraintRotatePivotZ
(crpz ) |
distance
(double) |
0.0cm |
|
|
|
constraintRotateTranslate
(crt ) |
double3 |
|
|
|
constraintRotateTranslateX
(crtx ) |
distance
(double) |
0.0cm |
|
|
|
constraintRotateTranslateY
(crty ) |
distance
(double) |
0.0cm |
|
|
|
constraintRotateTranslateZ
(crtz ) |
distance
(double) |
0.0cm |
|
|
|
constraintRotateOrder
(cro ) |
enum |
0 |
|
|
constraintJointOrient
(cjo ) |
double3 |
|
|
|
constraintJointOrientX
(cjox ) |
angle (double) |
0.0deg |
|
|
|
constraintJointOrientY
(cjoy ) |
angle (double) |
0.0deg |
|
|
|
constraintJointOrientZ
(cjoz ) |
angle (double) |
0.0deg |
|
|
|
constraintRotate
(cr ) |
double3 |
|
|
|
constraintRotateX
(crx ) |
angle (double) |
0.0deg |
|
|
|
constraintRotateY
(cry ) |
angle (double) |
0.0deg |
|
|
|
constraintRotateZ
(crz ) |
angle (double) |
0.0deg |
|
|
|
constraintVector
(cv ) |
double3 |
|
|
|
constraintVectorX
(cvx ) |
distance
(double) |
0.0cm |
|
|
|
constraintVectorY
(cvy ) |
distance
(double) |
0.0cm |
|
|
|
constraintVectorZ
(cvz ) |
distance
(double) |
0.0cm |
|
|
|
restRotate
(rsrr ) |
double3 |
|
|
|
restRotateX
(rrx ) |
angle (double) |
0.0deg |
|
|
|
restRotateY
(rry ) |
angle (double) |
0.0deg |
|
|
|
restRotateZ
(rrz ) |
angle (double) |
0.0deg |
|
|