HIKCharacterState でデータを設定および取得する

概要で紹介されているように、HIKCharacterState では、各ノードのトランスレーション、回転、およびスケールがキャラクタのスケルトンに格納されます。これらの値はそのキャラクタに対して、ポーズやスタンス、つまり各ジョイントの位置と向きを定義します。通常、次の状況では、データを直接 HIKCharacterState に設定する必要があります。

さらに、HumanIK ソルバによって生成されるすべてのキャラクタ ポーズは、HIKCharacterState に格納されます。HumanIK を使用して、リターゲットを実行しても、インバース キネマティクスを実行しても、必ず HIKCharacterState から生成されたアニメーション データを抽出する必要があります。

グローバル スペースと正規化された空間の比較

内部で、HumanIK は正規化された空間で機能します。その場合、キャラクタライゼーションのポーズに含まれる回転およびスケール オフセットは、各 HIKCharacterState に格納された値から削除されます。HIKCharacterState で、ノードに対してグローバル スペースで回転またはスケール値を設定するとき、キャラクタのデフォルトの T スタンスに含まれる回転およびスケール オフセットはどれも、新しい値が HIKCharacterState に格納される前に削除されます。同様に、HIKCharacterState で、ノードに対してグローバル スペースで回転またはスケール値を抽出するときはいつでも、HumanIK により、キャラクタのデフォルトの T スタンスに含まれるオフセットは、返される前に HIKCharacterState に格納されている正規化された値に、内部で再適用されます。

グローバル スペースでのノード データの設定および抽出の代替手段として、HumanIK が各 HIKCharacterState に対して内部で維持する、正規化されたスペースで直接作業することができます。この場合、ノードに対して回転およびスケール値を設定するとき、HumanIK では、値が直接 HIKCharacterState に、キャラクタのデフォルトの T スタンスに含まれるオフセットを削除しないで格納されます。同様に、この場合の回転およびスケール値を抽出するとき、HIKCharacterState に格納されている正規化された値は、デフォルトの T スタンスに含まれるオフセットを再適用しないで返されます。キャラクタのデフォルトの T スタンスに回転またはスケール オフセットを含まないノードの場合、正規化されたスペースでの作業により、回転およびスケール オフセットの削除および再適用の負荷を回避することができます。これにより、結果的にパフォーマンスが向上する場合があります。

正規化されたスペースの値を設定および取得する関数は、HIKGetNodeNormalizedStateTQSfv() など、名前に含まれる用語 Normalized によって示されます。正規化された空間でのデータの設定と抽出に使用できる関数の詳細については、次のセクションを参照してください。