Limb IK

Overview

CryEngine's animation system allows to setup IK chains for characters.

When an IK chain is active, the system figures out the values for the joints that are part of the chain so that the end effector reaches the provided target position (if it's possible to reach it). The exact behavior for each chain and the amount of joints supported depends on the solver used.

Examples of systems that currently use LimbIK chains:

Setup

IK chains are defined in the chrparams file for a character

<Params>
  <IK_Definition>
    <LimbIK_Definition>
      <IK EndEffector="Bip01 R Hand" Handle="RgtArm01" Root="Bip01 R UpperArm" Solver="2BIK"/>
      ...
      <IK EndEffector="Bip01 L Foot" Handle="LftLeg01" Root="Bip01 L Thigh" Solver="2BIK"/>
    </LimbIK_Definition>
    ...
  </IK_Definition>
  ...
</Params>

The following summarizes the attributes that must be defined for each IK element.

EndEffectorName of the joint that will try to reach the target location
HandleName used to identify the LimbIk definition. No more than 8 characters allowed. No two LimbIK definitions for a character should have the same Handle.
RootName of the starting joint for the IK chain
SolverName of the solver used to calculate the joint values when the chain is active.

These are the available solvers:

2BIK2 bone IK
3BIK3 bone IK
CCDXCyclic Coordinate Descent with X joints