As introduced in Overview, an HIKCharacterState stores the translation, rotation and scaling of each Node in a character’s skeleton. Taken together, these values define a pose or stance for that character—the position and orientation of each of its joints. Typically, you need to set data directly into an HIKCharacterState in the following situations:
In addition, all character poses generated by the HumanIK solvers are stored in HIKCharacterStates. Whether you use HumanIK to perform retargeting or inverse kinematics, you always need to retrieve the generated animation data from an HIKCharacterState.
Internally, HumanIK works in a normalized space, where the rotation and scale offsets contained in the characterization pose are removed from the values stored in each HIKCharacterState. When you set the rotation or scaling value in global space for a Node in an HIKCharacterState, any rotation and scale offsets contained in the character’s default T-stance are removed before the new values are stored in the HIKCharacterState. Similarly, whenever you retrieve the rotation or scaling value in global space for a Node in an HIKCharacterState, HumanIK internally re-applies the offsets contained in the character’s default T-stance to the normalized values stored in the HIKCharacterState before returning those values to you.
As an alternative to setting and retrieving Node data in global space, you can work directly in the normalized space that HumanIK maintains internally for each HIKCharacterState. In this cases, when you set rotation and scaling values for a Node, HumanIK stores the values directly in the HIKCharacterState without removing any offsets contained in the character’s default T-stance. Similarly, when you retrieve rotation and scaling values in this case, the normalized values stored in the HIKCharacterState are returned without re-applying any offsets contained in the default T-stance. For Nodes that do not contain any rotation or scale offsets in the character’s default T-stance, working in normalized space allows you to avoid the overhead of removing and re-applying the rotation and scale offsets, which may result in increased performance.
Functions that set and retrieve normalized space values are indicated by the term Normalized in their names, such as HIKGetNodeNormalizedStateTQSfv(). For details on the available functions for setting and retrieving data in normalized space, see the following sections.