Data Representations and Function Variants

Because different game engines may use very different representations of character animation data, HumanIK offers the choice of using several different data representations for 3D coordinates, orientations and scaling values.

The HumanIK functions that set and retrieve data fall into two main categories:

These approaches are essentially equivalent; you can use whichever fits more easily into your project and your existing data structures. However, because HumanIK stores values internally using separate translation, quaternion rotation and scaling values, the functions that accept and return Node and Effector data as transformation matrices need to convert the values internally. These matrix functions are therefore less efficient than the functions that represent translation, orientation and scaling values in separate arrays. Although this difference in performance is extremely small, it may be non-negligeable when setting or retrieving values for many different Nodes or Effectors at the same time.

Function variants

Many functions in HumanIK, especially those that set and retrieve coordinate data for Effectors and Nodes, are offered in several variants that accept different types of arguments. You can choose the variant that best matches the requirements of your game engine, and that results in the best performance in your environment.

Many functions are provided in different versions that accept either floating-point numbers or double-precision numbers, as indicated by the following suffixes:

For details on individual functions, see their descriptions in the API Reference.