Interface
to DAG nodes of IK handles.
Synopsis
#include <AlIKHandleNode.h>
class AlIKHandleNode : public AlDagNode
virtual ~AlIKHandleNode();
virtual AlObject* copyWrapper() const;
virtual AlObjectType type() const;
AlIKHandle* IKHandle() const;
AlIKHandle* IKHandle(AlTM&) const;
Description
All IK handles (AlIKHandle)
have associated DAG nodes (AlDagNode) that define their position
and orientation. The AlIKHandleNode class provides an interface
to the DAG node above an IK handle.
The position of this
DAG node defines the goal position for solving inverse kinematics. The
rotation of the AlDagNode has a special function depending on the
solver type of the IK handle below.
- For single-chain: the three rotational
axes get mapped to a single plane rotation and two pole rotations,
depending on the rotation order defined for this IK handle. In particular,
the first axis in the handle's rotation order controls the rotation
of the plane passing through the root and end-effector nodes. This
axis is used to orient the single-chain solution. The second and
third axes in the rotation order reorient the up vector of the IK
handle. The IK handle up vector defines the axis around which the
single-chain IK solution will flip when the end-effector crosses
over the line passing through the root and the end-effector. The
IK handle rotation order can be accessed through the AlIKHandle
class.
- For multi-solver: if the IK handle has
an orientation goal, rotating the IK handle controls the orientation
of the bone directly above the end-effector. A solution will be found
such that the local axes of the end-effector joint attempt to match
the local axes of the IK handle.
AlIKHandleNode::~AlIKHandleNode()
Description
Deletes
an AlIKHandleNode wrapper object.
AlObject* AlIKHandleNode::copyWrapper()
const
Description
Returns an exact duplicate of this
AlIKHandleNode wrapper.
AlObjectType AlIKHandleNode::type()
const
Description
Returns
the class identifier kIKHandleNodeType.
AlIKHandle* AlIKHandleNode::IKHandle()
const
Description
Returns
a pointer to the IKHandle data structure which can be used to access
the geometry of the IKHandle.
AlIKHandle* AlIKHandleNode::IKHandle(AlTM&
tm) const
Description
Returns a pointer to the
IKHandle data structure which can be used to access the geometry of
the IKHandle. The AlTM will be updated with the handle node’s TM.