HumanIK 3.5 から HumanIK 3.6 への移行

このセクションは、既存のコードで HumanIK バージョン 3.6 にアップグレードするために行わなければならない変更について説明します。

現在のソルバではプロパティ セット ステートへのポインタが必要

前のバージョンの HumanIK では、HIKCharacter を定義したプロパティとソルバがキャラクタを動かす方法をコントロールするプロパティは、それぞれの HIKCharacter オブジェクトの一部として保持されていました。同じ HIKCharacter オブジェクトを異なるスレッドで使用している際に競合するため、これらのキャラクタのプロパティが HIKCharacter から削除されており、現在は専用のオブジェクトの HIKPropertySetState で保持されています。

この変更をゲームで反映するためには、次の手順を行う必要があります。

  1. HIKPropertySetState のインスタンスを、HIKPropertySetStateCreate() 関数を呼び出して作成します。
  2. キャラクタに必要なモードと新しい HIKPropertySetState のプロパティの値を更新します。
  3. HIKPropertySetState のポインタを、インバース キネマティクスとリターゲット ソルバを呼び出す際に引数として渡します。

HumanIK を使用するための更新プロセスの詳細については、「HumanIK を使用する」を参照してください。

新しいキャラクタライゼーション プロセス

前のバージョンの HumanIK では、Character Definition にその定義から作成された HIK キャラクタが使用するノードのリストが含まれていました。ノードでペアレント オフセットと Degrees of Freedom をサポートするため、Character Definition オブジェクトが変更されました。HIKNodes 列挙値と同じ長さの float 配列を含むようになりました。この配列の各要素で、次の値を指定して対応するノードの状態を指示する必要があります。

詳細は、「初期化」を参照してください。

方向付きフロア コンタクト

前のバージョンの HumanIK では、フロア コンタクト エンジンはフラットなサーフェスにのみ使用され、HIKSetEffectorFloorStatefv() 関数は Y 軸のフロアの高さのみを必要としていました。

しかし、HumanIK 3.6 で導入された方向付きフロア コンタクトでは、HIKSetEffectorFloorStatefv() 関数で、フロアのトランスレーションと方向を提供する変換配列を必要とするようになりました。

ゲームで HIKSetEffectorFloorStatefv() 関数を使用する場合、これに合わせてコードを更新する必要があります。

詳細は、「足および手のコンタクトを設定する」を参照してください。