Go to:
Related nodes. Attributes.
The ikHandle node represents the goal of the skeleton. An
ikSolver takes the goal information (position and orientation) to find
the IK solution for the skeleton.
An ikHandle node has the skeleton information, the start joint (joint)
and the end-effector (ikEffector) of that skeleton. From these two ends,
the ikHandle node knows the whole skeleton chain, for example, all the
degrees of freedom (DOF).
There are several kinds of ikHandle nodes, depending on what ikSolver they
use. If the ikHandle node uses an ikRPsolver or ikSCsolver, it is a single
chain handle. If it uses an ikSplineSolver, it is an IK spline handle.
These different IK handles have different behavior which is determined by
the IK solver.
A single chain handle is created with the IK handle tool, and an IK spline
handle with the IK spline handle tool. They can also be created with the
ikHandle command. When an ikHandle node has been created, it is connected
with the start joint and the end-effector of the skeleton chain, and also
connected with the given ikSolver node through three attributes, startJoint,
endEffector, and ikSolver. Then it becomes a valid ikHandle and is added
into a global list of ikHandle nodes in the ikSystem node.
There are also other attributes that determine how this ikHandle node is
involved in an IK solution.
The ikBlend attribute determines whether the joints spanned by the ikHandle
are solved by pure IK, pure FK (joint rotations), or a blend of the two.
An ikBlend of 1.0 specifies pure IK. An ikBlend of 0.0 specifies pure FK.
Values between 0 and 1 are blended. The default value is 1.0.
Prior to version 5.0 of Maya, the ikBlend attribute
was called "solverEnable".
The snapEnable attribute allows the ikHandle node to be snapped back
to the end-effector position and orientation if it is on. The default
is on.
The stickiness attribute is an enum attribute. It works in the interactive
mode. If it is set to 'sticky', the IK solution should be calculated when
translating the root of the skeleton. The default is off.
The priority attribute represents an order in which this ikHandle node gets
solved. It also determines how ikHandle nodes will be grouped. The ikHandle
node with the smaller priority value will be solved earlier than higher.
If auto-priority is on when creating an ikHandle node, the priority is set
to the depth of start joint in the hierarchy. The default priority is 1.
The weight attribute determines how much this ikHandle node affects
the IK solution. This attribute does not affect the ik solution for single
chain and spline ikHandle nodes. The default value is 1.0.
The poWeight attribute is a balance weight value of position/orientation.
It is used to determine how the position/orientation of this ikHandle node
affects the IK solution. If it is 1.0, only position information of the
ikHandle node contributes to the IK solution. If it is 0.0, only the
orientation is taken into account to compute the IK solution. This
attribute does not affect the ik solution for single chain and spline
ikHandle nodes either. The default value is 1.0.
The poleVector attribute is a special control for an ikHandle node which
uses an ikRPsolver (see the documentation for the ikRPsolver node). The
default value is the Z-axis (0.0 0.0 1.0).
The twist attribute determines the twist value of the
ikRPhandle or ikSplineHandle. For the ikSplineHandle, the twist value
determines how much to twist the joint chain from the end. (For the ikRPhandle,
see the documentation for the ikRPsolver node). The default value is 0.0.
The following attributes are specific to the ikSplineSolver.
See the documentation for the ikSplineSolver node for more details.
The inCurve attribute is an input curve which is used to determine where
to place and how to orient the joints.
The rootOnCurve attribute determines if the root joint is constrained
to be on the curve.
The offset attribute determines how much to offset the root joint
along the curve. The offset value is used only when the attribute
rootOnCurve is set. The default value is 0.0.
The roll attribute determines how much to roll the root joint.
All subsequent joints are rolled as well. The default value is 0.0.
The twistType attribute is an enum attribute which determines how
to distribute the twist along the joints. There are four twist types:
linear, easeIn, easeOut and easeInOut. The default type is linear.
The rootTwistMode attribute indicates whether the start joint is allowed to
twist or not. If not, then the required twist is distributed over the
remaining joints. This applies to all the twist types.
Node name | Parents | Classification | MFn type | Compatible function sets |
---|
ikHandle | transform | drawdb/geometry/ikHandle | kIkHandle | kBase kNamedObject kDependencyNode kDagNode kTransform kIkHandle |
Related nodes
joint, ikSolver, ikMCsolver, ikSplineSolver, ikSCsolver, ikRPsolver, ikPASolver, ikSystem, ikEffector
Attributes (50)
checkSnappingFlag, dTwistControlEnable, dTwistEnd, dTwistRamp, dTwistRampB, dTwistRampG, dTwistRampMult, dTwistRampR, dTwistStart, dTwistStartEnd, dTwistValueType, dWorldUpAxis, dWorldUpMatrix, dWorldUpMatrixEnd, dWorldUpType, dWorldUpVector, dWorldUpVectorEnd, dWorldUpVectorEndX, dWorldUpVectorEndY, dWorldUpVectorEndZ, dWorldUpVectorX, dWorldUpVectorY, dWorldUpVectorZ, dofList, dofListDirtyFlag, endEffector, handleDirtyFlag, ikBlend, ikFkManipulation, ikSolver, inCurve, offset, owningHandleGroup, poWeight, poleVector, poleVectorX, poleVectorY, poleVectorZ, priority, roll, rootOnCurve, rootTwistMode, skeletonDirtyFlag, snapEnable, splineIkOldStyle, startJoint, stickiness, twist, twistType, weight
Long name (short name) | Type | Default | Flags |
---|
|
startJoint
(hsj )
| Message | n/a | |
|
|
endEffector
(hee )
| Message | n/a | |
|
|
ikSolver
(hsv )
| Message | n/a | |
|
|
snapEnable
(hsh )
| bool | true | |
|
|
stickiness
(hs )
| enum | 0 | |
|
|
priority
(hpr )
| integer | 1 | |
|
|
weight
(hw )
| double | 1.0 | |
|
|
poWeight
(hpo )
| double | 1.0 | |
|
|
poleVector
(pv )
| double3 | | |
|
| poleVectorX
(pvx )
| double | 0.0 | | |
|
| poleVectorY
(pvy )
| double | 0.0 | | |
|
| poleVectorZ
(pvz )
| double | 1.0 | | |
|
|
inCurve
(ic )
| nurbsCurve | NULL | |
|
|
offset
(off )
| double | 0.0 | |
|
|
roll
(rol )
| angle (double) | 0.0deg | |
|
|
twist
(twi )
| angle (double) | 0.0deg | |
|
|
rootOnCurve
(roc )
| bool | false | |
|
|
twistType
(twt )
| enum | 0 | |
|
|
rootTwistMode
(rtm )
| bool | false | |
|
|
ikBlend
(ikb )
| double | 1.0 | |
|
|
handleDirtyFlag
(hdf )
| bool | false | |
|
|
checkSnappingFlag
(csf )
| bool | false | |
|
|
owningHandleGroup
(ohg )
| voidPtr | NULL | |
|
|
dofList
(dfl )
| voidPtr | voidPtr | |
|
|
dofListDirtyFlag
(dld )
| bool | false | |
|
|
skeletonDirtyFlag
(ods )
| bool | false | |
|
|
ikFkManipulation
(eik )
| bool | false | |
|
|
dWorldUpType
(dwut )
| enum | 0 | |
|
|
dWorldUpAxis
(dwua )
| enum | 0 | |
|
|
dWorldUpVector
(dwuv )
| double3 | | |
|
| dWorldUpVectorX
(dwux )
| double | 0.0 | | |
|
| dWorldUpVectorY
(dwuy )
| double | 1.0 | | |
|
| dWorldUpVectorZ
(dwuz )
| double | 0.0 | | |
|
|
dWorldUpVectorEnd
(dwve )
| double3 | | |
|
| dWorldUpVectorEndX
(dwvx )
| double | 0.0 | | |
|
| dWorldUpVectorEndY
(dwvy )
| double | 1.0 | | |
|
| dWorldUpVectorEndZ
(dwvz )
| double | 0.0 | | |
|
|
dWorldUpMatrix
(dwum )
| matrix | identity | |
|
|
dWorldUpMatrixEnd
(dwue )
| matrix | identity | |
|
|
dTwistValueType
(dtvt )
| enum | 0 | |
|
|
dTwistStartEnd
(dtse )
| double2 | | |
|
| dTwistStart
(dtst )
| double | 0.0 | | |
|
| dTwistEnd
(dten )
| double | 0.0 | | |
|
|
dTwistRamp
(dtra )
| float3 | | |
|
| dTwistRampR
(dtrr )
| float | 0.0 | | |
|
| dTwistRampG
(dtrg )
| float | 0.0 | | |
|
| dTwistRampB
(dtrb )
| float | 0.0 | | |
|
|
dTwistRampMult
(dtrm )
| double | 90.0 | |
|
|
dTwistControlEnable
(dtce )
| bool | false | |
|
|
splineIkOldStyle
(sio )
| bool | false | |
|