HIKPropertySetState には、キャラクタを定義し、HumanIK ソルバの動作をコントロールする、プロパティと呼ばれる多くの設定オプションが含まれています。すべての可能なプロパティは HIKProperty 列挙値で識別されます。
各プロパティには、設定オプションを有効にするかどうかを HumanIK ソルバに対して示すモードがあります。多くのプロパティは、ソルバが計算で使用する値も示します。
HIKPropertySetState を作成すると、状態の各プロパティにはデフォルトのモードとデフォルト値が割り当てられますが、これらは動的に変更できます。
一部のプロパティは単純な On/Off の切り替えスイッチです。On に設定すると、各設定オプションが有効になります。
その他のプロパティでは、On モードはソルバに対して、プロパティに設定された値を考慮する必要があることも示します。これは、次に示す User モードに類似しています。
すべてのプロパティがすべてのモードを受け入れるわけではありません。各プロパティが受け入れるモードは、プロパティのモード タイプによって示されます。モードの可能な種類は HIKPropertyModeType 列挙値に示されます(HIKPropertyNoMode、HIKPropertyOffOn、HIKPropertyOffAutoUser、HIKPropertyAutoUser)。
HIKPropertySetState でプロパティの現在のモードを設定するには、HIKSetPropertyMode() 関数を呼び出します。
整数値を使用して希望のモードを指定します。この解釈はプロパティのモード タイプによって決まります。
たとえば、HIKHandFloorContactId プロパティにはモード タイプとして HIKPropertyOffOn があるので、次の最初の行によりプロパティがアクティブになります。HIKAnkleHeightCompensationId プロパティにはモード タイプとして HIKPropertyOffAutoUser があるので、次の 2 つ目の行によりプロパティがアクティブになり、HumanIK がユーザ定義の値を考慮できるようになります。
HIKSetPropertyMode(MyPropertyState, HIKHandFloorContactId, 1); HIKSetPropertyMode(MyPropertyState, HIKAnkleHeightCompensationId, 2);
各プロパティに対してあらかじめ設定されているユニットのタイプにより、HumanIK ソルバによるプロパティ値の解釈方法は異なります。可能なユニットのタイプは HIKPropertyUnit 列挙値に示されます(HIKPropertyNoUnit、HIKPropertyPercent、HIKPropertySecond、HIKPropertyCentimeter、HIKPropertyDegree、HIKPropertyEnum、HIKPropertyReal)。
各プロパティには、動的に変更することができない、あらかじめ設定された最小値と最大値もあります。
HIKPropertySetState でプロパティの現在のモードを設定するには、HIKSetPropertyValue() 関数を呼び出します。
プロパティに割り当てる新しい値は、プロパティのユニットのタイプと一致する必要があります。ほとんどのユニットのタイプでは、この値は浮動小数点数であることが想定されています。ただし、ユニットのタイプが HIKPropertyEnum であるプロパティでは、この値は希望の列挙値を反映した整数である必要があります。
たとえば、HIKReachActorLeftAnkleId プロパティにはユニットのタイプとして HIKPropertyPercent が設定されているので、次の最初の行により値が 50% になります。HIKFootContactTypeId プロパティにはモード タイプとして HIKPropertyEnum が設定されているので、その値はこのプロパティに固有の列挙値を反映した整数である必要があります。この場合、その値は ToeBase コンタクト タイプに該当する 2 に設定されます。HIKPropertyEnum 値タイプについて各プロパティで使用できる列挙値の詳細は、プロパティの詳細な説明を参照してください。
HIKSetPropertyValue(MyPropertyState, HIKReachActorLeftAnkleId, 0.50); HIKSetPropertyValue(MyPropertyState, HIKFootContactTypeId, 2);
次のページでは、各キャラクタ プロパティと、そのモード タイプ、受け入れられるモード、デフォルトのモード、ユニットのタイプ、受け入れられる値、デフォルト値を示します。これらのプロパティは次の広いカテゴリに分類されます。
モード タイプが HIKPropertyNoMode のプロパティはモードを変更できないため、次のページにその他のモードの情報は記載されていません。
HumanIK によって値が使用されることがないプロパティについては、次のページに値の情報は記載されていません。通常、これが該当するのは、単純なオン/オフの切り替えである HIKPropertyOffOn モード タイプのプロパティのみです。
HumanIK には、一意の ID、モード タイプ、デフォルトのモード、ユニット タイプ、デフォルト値、人間が解読可能な形式の名前など、HIKPropertySetState で設定できる各キャラクタのプロパティに関する情報を取得する関数セットが用意されています。ゲーム中、ランタイムにこれらの関数を呼び出す必要が生じる可能性は低いものの、HumanIK をコントロールする GUI をビルドする場合、これらのプロパティ情報の取得関数が役に立つことがあります。