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.
Each property must have one of the following modes at any given time:
Some properties are a simple On/Off toggle switch; they enable their respective configuration options when set to On.
For other properties, the On mode also indicates to the solvers that the value set for the property should be taken into account. This is similar to the User mode described below.
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.
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:
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.
HIKSetPropertyMode(MyPropertyState, HIKHandFloorContactId, 1); HIKSetPropertyMode(MyPropertyState, HIKAnkleHeightCompensationId, 2);
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.
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.
HIKSetPropertyValue(MyPropertyState, HIKReachActorLeftAnkleId, 0.50); HIKSetPropertyValue(MyPropertyState, HIKFootContactTypeId, 2);
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.
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.