Character Properties

HIKPropertySetStates contain a large set of configuration options known as properties, that define your character and control the behavior of the HumanIK solvers. All possible properties are identified in the HIKProperty enumeration.

Each property has a mode, which indicates to the HumanIK solver whether or not its configuration option should be enabled. Many properties also indicate a value that the solver should use in its calculations.

When you create an HIKPropertySetState, each property in the state is assigned a default mode and a default value, which you can change dynamically.

Modes

Each property must have one of the following modes at any given time:

Mode types

Not all properties accept all modes. The modes accepted by each property are indicated by the property’s mode type. Possible mode types are listed in the HIKPropertyModeType enumeration: HIKPropertyNoMode, HIKPropertyOffOn, HIKPropertyOffAutoUser, or HIKPropertyAutoUser.

The mode type of each property is pre-set and cannot be changed.

Setting the mode of a property

To set the current mode of a property in an HIKPropertySetState, call the HIKSetPropertyMode() function.

You specify the desired mode using an integer value, whose interpretation depends on the mode type of the property:

  • If your property’s mode type is HIKPropertyNoMode, you cannot change its mode at all.
  • If your property’s mode type is HIKPropertyOffOn, a value of 0 sets the property mode to Off, and a value of 1 sets the property mode to On.
  • If your property’s mode type is HIKPropertyOffAutoUser, a value of 0 sets the property mode to Off, a value of 1 sets the property mode to Auto, and a value of 2 sets the property mode to User.
  • If your property’s mode type is HIKPropertyAutoUser, a value of 0 sets the property mode to Auto, and a value of 1 sets the property mode to User.

For example, the HIKHandFloorContactId property has a mode type of HIKPropertyOffOn, so the first line below activates the property. The HIKAnkleHeightCompensationId property has a mode type of HIKPropertyOffAutoUser, so the second line below activates the property and makes HumanIK take its user-defined value into account.

Values

Property values may be interpreted by the HumanIK solvers in different ways, according to the unit type pre-set for each property. The possible unit types are listed in the HIKPropertyUnit enumeration: HIKPropertyNoUnit, HIKPropertyPercent, HIKPropertySecond, HIKPropertyCentimeter, HIKPropertyDegree, HIKPropertyEnum, HIKPropertyReal.

Each property also has pre-set minimum and maximum values that you cannot change dynamically.

Setting the value of a property

To set the current mode of a property in an HIKPropertySetState, call the HIKSetPropertyValue() function.

The new value you assign to the property must match the unit type of the property. For most unit types, this value is expected to be a floating-point number. However, for properties with the HIKPropertyEnum unit type, this value should be an integer reflecting the desired enumeration value.

For example, the HIKReachActorLeftAnkleId property has a unit type of HIKPropertyPercent, so the first line below sets the value to 50%. The HIKFootContactTypeId property has a mode type of HIKPropertyEnum; therefore, its value must be an integer that reflects an enumeration specific to this property. In this case, its value is being set to 2, which corresponds to the ToeBase contact type. For details on the enumeration values available for each property with the HIKPropertyEnum value type, see the detailed property description.

Property descriptions

The following pages list and describe each character property, along with its mode type, accepted modes, default mode, unit type, accepted values, and default value. These properties fall into the following broad categories:

Properties with the HIKPropertyNoMode mode type do not have any other mode information listed on these pages, as their mode cannot be changed.

Properties whose values are never used by HumanIK have no value information listed on these pages. This is typically the case only for properties with the HIKPropertyOffOn mode type that are simple on/off toggles.

Retrieving property information

HumanIK offers a set of functions for retrieving information about each character property that can be configured in an HIKPropertySetState, such as its unique ID, mode type, default mode, unit type, default value and human-readable name. Although you are unlikely to need to call these functions at runtime during the course of your game, these property information retrieval functions can be of use should you choose to build a GUI for controlling HumanIK.

For details on these functions, see the "Retrieving Property Information" module of the API Reference.