Degrees of Freedom

The HumanIK bio-mechanical model contains several built-in limitations on the rotations of a biped skeleton, to avoid impossible and unrealistic movements. For example, characters’ elbows can open along their main axis until they reach full extension, but can never bend backwards. Degrees of Freedom let you add to these built-in rotation limits for specific characters, to create additional constraints on the flexibility of their skeletons.

You can set different Degrees of Freedom for each different Node in your Character to prevent HumanIK from rotating those Nodes into certain forbidden orientations around their local X, Y and Z axes. To compensate for these limitations, the inverse kinematics solver will attempt to rotate other Nodes in the character’s skeleton in order to satisfy the requirements set by the HIKEffectorSetState.

Degrees of Freedom are typically determined by an artist or animator working in a digital content creation tool such as MotionBuilder, Maya, or 3ds Max. Appropriate values can be difficult to predict without a way to visualize the axis orientations. It is recommended that you use Degrees of Freedom in HumanIK only to support the limitations of a character’s range of motion that have been pre-determined by the artist.

Setting up Degrees of Freedom

In HumanIK, Degrees of Freedom must be set in the character’s characterization.

Although you cannot set Degrees of Freedom once your HIKCharacter has been finalized, you can retrieve the Degrees of Freedom assigned to a Node at any time by calling the HIKGetLimitsfv() function. Note that these Degrees of Freedom are always expressed in the local space of each Node, not in global space.