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 nameParentsMFn typeCompatible function sets
ikHandletransformkIkHandlekBase
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)TypeDefaultFlags
startJoint (hsj) Messagen/aoutputinputconnectable
The IK handle's start joint.
endEffector (hee) Messagen/aoutputinputconnectable
The IK handle's end effector.
ikSolver (hsv) Messagen/aoutputinputconnectable
The IK solver used by the IK handle.
snapEnable (hsh) booltrueoutputinputconnectablestorable
Indicates whether the IK handle may be snapped or not.
stickiness (hs) enum0outputinputconnectablestorable
Indicates whether stickiness is enabled for the IK handle or not.
priority (hpr) integer1outputinputconnectablestorable
The IK handle's priority value for grouping.
weight (hw) double1.0outputinputconnectablestorable
Determine how much this IK handle affects the IK solution.
poWeight (hpo) double1.0outputinputconnectablestorable
Determine how position/orientation affects IK solution.
poleVector (pv) double3outputinputconnectablestorable
Pole vector used by ikRPsolver to adjust the IK solution.
poleVectorX (pvx) double0.0outputinputconnectablestorablekeyable
X component of the pole vector.
poleVectorY (pvy) double0.0outputinputconnectablestorablekeyable
Y component of the pole vector.
poleVectorZ (pvz) double1.0outputinputconnectablestorablekeyable
Z component of the pole vector.
inCurve (ic) nurbsCurveNULLoutputinputconnectable
The IK spline handle's input curve.
offset (off) double0.0outputinputconnectablestorablekeyable
The ikSplineHandle's offset along the curve.
roll (rol) angle (double)0.0degoutputinputconnectablestorablekeyable
The ikSplineHandle's roll.
twist (twi) angle (double)0.0degoutputinputconnectablestorablekeyable
The twist for both the IK spline handle and the IK RP handle.
rootOnCurve (roc) boolfalseoutputinputconnectablestorable
Indicates if the IK spline handle's root joint is constrained to the curve.
twistType (twt) enum0outputinputconnectablestorable
The IK spline handle's twist interpolation type. The following are legal values: 0=Linear, 1=EaseIn, 2=EaseOut, 3=EaseInOut.
rootTwistMode (rtm) boolfalseoutputinputconnectablestorable
This 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.
ikBlend (ikb) double1.0outputinputconnectablestorablekeyable
Indicates whether or not the solver is invoked for the IK handle. A value of 1.0 means the solver is invoked. A value of 0.0 means the solver is not invoked. Values between 0 and 1 indicate that the solver result will be blended with fk connections on the joints.
handleDirtyFlag (hdf) boolfalseoutputinputhidden
Intended for internal use only
checkSnappingFlag (csf) boolfalseoutputinputhidden
Intended for internal use only
owningHandleGroup (ohg) voidPtrNULLoutputinputhidden
Intended for internal use only
dofList (dfl) voidPtrvoidPtroutputinputhidden
Intended for internal use only
dofListDirtyFlag (dld) boolfalseoutputinputhidden
Intended for internal use only
skeletonDirtyFlag (ods) boolfalseoutputinputhidden
Intended for internal use only
ikFkManipulation (eik) boolfalseoutputinputconnectablestorable
Enables ik blend controls: snapping is disabled, and joints can be rotated even when there are keys on the handle. When true, this attribute overrides the global ik blend setting.
dWorldUpType (dwut) enum0outputinputconnectablestorable
Applies to Spline IK Handles only. The type of up-vector constraint used to twist joints in the chain. Legal values are 0=Scene Up, 1=Object Up, 2=Object Up (Start/End), 3=Object Rotation Up, 4=Object Rotation Up (Start/End), 5=Vector, 6=Vector (Start/End), 7=Relative
dWorldUpAxis (dwua) enum0outputinputconnectablestorable
Applies to Spline IK Handles only. Determines which of the joints local axes will be aligned with the up vector when an up vector is in use. The positive or negative Y or Z axes can be selected, or the "closest" of one of those axes (meaning whichever of the positive or negative axes is closest to the up vector). The X-axes are not available, since the joint x-axis always points along the spline. Joint twisting happens about this axis. "Closest Y" and "Closest Z" modes are useful for joint chains that have been constructed with their local axes flipped every few joints. These settings are not recommended for animation, as they are prone to flipping as the chain moves.
dWorldUpVector (dwuv) double3outputinputconnectablestorable
Applies to Spline IK Handles only. Joints will twist to make one of their local axes align as best as possible with this vector. If the World Up Type value is Vector, then this value specifies a worldspace vector. For Object Rotation mode, this value specifies a vector in the local space of the target object specified by the World Up Object attribute. If the World Up Type is either Vector (Start/End) or Object Rotation Up (Start/End), then the vector applies to the start joint in the chain, and is interpolated with the World Up Vector End value that is specified for the end joint in the chain. Otherwise, this value is used for every joint in the chain.
dWorldUpVectorX (dwux) double0.0outputinputconnectablestorable
Applies to Spline IK Handles only. X component of the up vector
dWorldUpVectorY (dwuy) double1.0outputinputconnectablestorable
Applies to Spline IK Handles only. Y component of the up vector
dWorldUpVectorZ (dwuz) double0.0outputinputconnectablestorable
Applies to Spline IK Handles only. Z component of the up vector
dWorldUpVectorEnd (dwve) double3outputinputconnectablestorable
Applies to Spline IK Handles only. Same as World Up Vector attribute, except this value applies to the end joint in the chain. When the World Up Type is Vector (Start/End) or Object Rotation Up (Start/End), the World Up Vector and World Up Vector End values will be interpolated along the chain to provide up vectors for the intermediate joints.
dWorldUpVectorEndX (dwvx) double0.0outputinputconnectablestorable
Applies to Spline IK Handles only. X component of the end joint up vector
dWorldUpVectorEndY (dwvy) double1.0outputinputconnectablestorable
Applies to Spline IK Handles only. Y component of the end joint up vector
dWorldUpVectorEndZ (dwvz) double0.0outputinputconnectablestorable
Applies to Spline IK Handles only. Z component of the end joint up vector
dWorldUpMatrix (dwum) matrixidentityoutputinputconnectablestorable
Applies to Spline IK Handles only. Object->World matrix for object being used to specify up vector in Object Up or Object Rotation Up modes. If in one of the Start/End modes, this object's matrix is used to compute a value for the first joint (which is then interpolated with a value computed for the last joint), otherwise this matrix is used for the entire array.
dWorldUpMatrixEnd (dwue) matrixidentityoutputinputconnectablestorable
Applies to Spline IK Handles only. Object->World matrix for object being used to specify up vector for the last joint in the chain. Up vector computed using this matrix will be interpolated with the one computed for the start joint when in Object Up (Start/End) or Object Rotation Up (Start/End) modes.
dTwistValueType (dtvt) enum0outputinputconnectablestorable
Applies to Spline IK Handles only. Specifies how twist will be distributed along the joint chain. "Total" mode means that the Twist attribute specifies a total amount of twist for the end joint, and all previous joints ramp up to this value. "Start/End" mode means that the Twist Start/End attribute specifies twist values for the start and end joints, and other joints interpolate their twist values from these. "Ramp" mode means that a texture is used to specify twists for joints along the chain. Joints are assigned texture coordinates (0.0,V), where V ranges from 0.0 to 1.0 along the chain. Valid values are 0=Total, 1=Start/End, 2=Ramp.
dTwistStartEnd (dtse) double2outputinputconnectablestorable
Applies to Spline IK Handles only. For "Start/End" twist mode, specifies twist values for the start and end joints in the chain. Values for intermediate joints are interpolated from these values. Twist is applied relative to the up-vector specified via the World Up Type controls. If the World Up Type is "Relative", then joints twist relative to their predecessors in the chain.
dTwistStart (dtst) double0.0outputinputconnectablestorable
Applies to Spline IK Handles only. Twist value for the start joint in the chain. Only has an effect when Twist Type is set to Start/End.
dTwistEnd (dten) double0.0outputinputconnectablestorable
Applies to Spline IK Handles only. Twist value for the end joint in the chain. Only has an effect when Twist Type is set to Start/End.
dTwistRamp (dtra) float3outputinputconnectablestorable
Applies to Spline IK Handles only. 2d texture node used to distribute twist along the joint chain. Joints are assigned texture V-coordinates in the range [0,1], and the texture is evaluated at coordinates (0.0,V). The luminance of the resulting color is multiplied by the value of the Texture Multiplier attribute to produce the twist for that joint.
dTwistRampR (dtrr) float0.0outputinputconnectablestorable
Applies to Spline IK Handles only. R component of the twist texture color
dTwistRampG (dtrg) float0.0outputinputconnectablestorable
Applies to Spline IK Handles only. G component of the twist texture color
dTwistRampB (dtrb) float0.0outputinputconnectablestorable
Applies to Spline IK Handles only. B component of the twist texture color
dTwistRampMult (dtrm) double90.0outputinputconnectablestorable
Applies to Spline IK Handles only. Value (in degrees) that is multiplied by the result of the twist texture when the Twist Value Type is Ramp. This is to map the texture result (typically in the range [0,1]) into a more useful range of angular twist.
dTwistControlEnable (dtce) boolfalseoutputinputconnectablestorable
Applies to Spline IK Handles only. Determines whether the Advanced Twist Controls are used or not. If disabled, Maya will use the old style twist, in which each joint twists relative to its predecessor in the joint chain. This can lead to undesirable excess twisting as the chain animates. With the Advanced Twist controls, users can lock the twist to an up-vector that can be specified in a number of ways. Additional twist can also be applied along the chain using the different Twist Value Types.
splineIkOldStyle (sio) boolfalseoutputinputconnectablestorable
Used only with the ikSpringSolver. Prior to Maya 8.5, spring ik solvers used the scene up as the solver up orientation, so they did not work right when parented. Fixing that problem changed the solution for some existing spring ik setups. Setting this attribute to true goes back to the old (pre-8.5) style of computation.