Moving from HumanIK 3.5 to HumanIK 3.6

This section describes the changes that you must make in your existing code to upgrade to version 3.6 of HumanIK.

Solvers now require pointer to Property Set State

In previous versions of HumanIK, the properties that defined an HIKCharacter and controlled the way the solvers moved that character were maintained as part of each HIKCharacter object. Due to conflicts when using the same HIKCharacter object in different threads, these character properties have been removed from the HIKCharacter, and are now maintained in a dedicated object, the HIKPropertySetState.

In order to reflect this change in your game, you must:

  1. Create an instance of an HIKPropertySetState by calling the HIKPropertySetStateCreate() function.
  2. Update the modes and values of the properties in the new HIKPropertySetState as required for your character.
  3. Pass a pointer to the HIKPropertySetState as an argument when you call the inverse kinematics and retargeting solvers.

For details on the updated process for using HumanIK, see Using HumanIK.

New Characterization process

In previous versions of HumanIK, the Character Definition contained a list of the Nodes to be used by each HIK Character created from that definition. In order to support Nodes with parent offsets and Degrees of Freedom, the structure of the Character Definition object has changed. It now contains an array of floats the same length as the HIKNodes enumeration. For each element in that array, you must specify one of the following values to indicate the state of the corresponding Node:

For details, see Initialization.

Oriented floor contact

In previous versions of HumanIK, the floor contact engine used only flat surfaces, and the HIKSetEffectorFloorStatefv() function required only the height of the floor on the Y axis.

With the oriented floor contact introduced in HumanIK 3.6, however, the HIKSetEffectorFloorStatefv() function now requires a transform matrix that provides the translation and orientation of the floor.

If you use the HIKSetEffectorFloorStatefv() function in your game, you must update your code accordingly.

For details, see Setting up Foot and Hand Contact.