概要

このセクションでは、HumanIK の使用に関連する主要なオブジェクトと概念について説明します。

HIKCharacter

基本的に、HumanIK はキャラクタに作用します。 HumanIK ソルバで全体または一部をコントロールする各キャラクタは、HIKCharacter オブジェクトによって表す必要があります。この HIKCharacter は、HumanIK に固有の二足または四足形態の表現であり、HumanIK の生体力学モデルでの使用に最適化されています。

HIKCharacter には、ノードと呼ばれるジョイントのセットが含まれています。HumanIK によってサポートされる各ノードは、人間のスケルトンの特定の部分に対応して事前に定義されています。たとえば、左腕の肘を表すノード、左腕の手首を表すノード、親指の最初のジョイントを表すノードなどがあります。

HumanIK は、170 種類以上の定義済みジョイントをサポートしています。これらはHIKNodeId 列挙値にリストされています。 これらのノード ID のうち 15 個は必須です。すべての HIKCharacter は、少なくともこれらの必須ノードを含んでいる必要があります。さらに、ゲーム キャラクタのスケルトン内のジョイントと、HumanIK に求める精度に基づいて、HIKCharacter で他のオプションのノードを使用するかどうかを選択することができます。ゲーム キャラクタのスケルトンの各ジョイントを最も適切に表す HumanIK ノードを判断するために役立つ詳細情報については、「HumanIK ノードおよびエフェクタにジョイントをマッピングする」を参照してください。

キャラクタのジオメトリ

同じジョイント セットを含むすべてのキャラクタが、それらのジョイントを同じ場所に備えているとは限りません。たとえば、背の高いキャラクタは、背の低いキャラクタよりも脚や腕が長くなる可能性があり、女性のキャラクタは男性のキャラクタよりもヒップが幅広になる可能性があります。

HIKCharacter は、キャラクタがニュートラルの T スタンスで立ったときの各ジョイントの配置に関する情報のセットを維持します。 例:

詳細は、「デフォルトの T スタンス」を参照してください。

このキャラクタのデフォルトのジオメトリを設定するプロセスを、キャラクタライゼーションといいます。 キャラクタライゼーションはプログラムで行うことができます。それには、HumanIK API で提供される関数を呼び出して、キャラクタの各ノードに適切なトランスレーションと方向を設定します。または、Maya や Softimage などの視覚的コンテンツ作成ツールからキャラクタライゼーションを書き出すこともできます。このプロセスの詳細については、「初期化」を参照してください。

HIKCharacterState

HIKCharacter の各ノードは、与えた特定の位置と方向を持ちます。これらの位置と回転を組み合わせることで、キャラクタの完全なスタンスまたはポーズが定義されます。 HIKCharacterState は、HIKCharacter の各ノードについての単一の位置の値と回転値を格納し、それによってキャラクタのポーズを格納するオブジェクトです。

HumanIK ソルバは、これらの HIKCharacterState を入力と出力の両方として使用します。

HIKEffectorSetState

エフェクタは、キャラクタのボディの異なるパーツの希望の位置と回転を定義します。エフェクタは HIKEffectorSetState と呼ばれるセット内で使用され、それぞれが特定の時点におけるキャラクタの手足の目標ポイントの一貫したセットを定義します。

HIKEffectorSetState は、キャラクタのスケルトンの各ノードについての独立したエフェクタを含むわけではありません。 代わりに、二足または四足形態のセマンティックな要素を表すエフェクタのセットを含みます。たとえば、左手の各指の先端に対する単一のエフェクタ、左手首に対するエフェクタ、左肘に対するエフェクタがあります。しかし、各指のさまざまな数のノード、インハンド ノード、腕のロール ノードなどを使用して、キャラクタの手について多数の異なるスケルトン設定を行うことができます。キャラクタのジオメトリに基づいて、インバース キネマティクス ソルバはエフェクタによって表される希望のトランスレーションと方向をスケルトンの関連するパーツにマップします。

たとえば、左中指の先端のエフェクタをキャラクタの手首に向かって移動すると、インバース キネマティクス ソルバにより、指のエフェクタが希望の位置に配置され、必要に応じて手の他のノードが移動します。中指に複数のノードがある場合、これによって指が曲がります。

HumanIK のインバース キネマティック ソルバは、指定された HIKEffectorSetState 内のすべてのエフェクタのニーズを調整して、キャラクタの多くの手足を対応するエフェクタによって示される位置と回転に置く最適な調整を実現します。

HIKEffectorSetState の各エフェクタは、アクティブまたは非アクティブにすることができ、Reach、Pull、Resist などの他の特殊な制約をソルバに適用できます。「Reach」、「Pull」、および「Resist」を参照してください。HumanIK の生体力学モデルが認識できるエフェクタのリストについては、HIKEffectorId 列挙値を参照してください。

HIKPropertySetState

HIKPropertySetState は、インバース キネマティクスとリターゲット プロセスを設定するパラメータのセットを含みます。インバース キネマティクスまたはリターゲット ソルバを使用するたびに、HIKPropertySetState を指定する必要があります。ただし、そのパラメータのデフォルト値を必要に応じてカスタマイズすることができます。

HIKPropertySetState は、キャラクタの設定方法に依存しません。すべての HIKPropertySetState は、同じパラメータ リストを含みます。異なるスケルトン構造とジオメトリを持つキャラクタを解析するために、同じ HIKPropertySetState を使用することができます。もちろん、両方のキャラクタに対してソルバを同じように動作させる必要があることが前提です。

HIKPropertySetState で設定できるプロパティの詳細については、「キャラクタ プロパティ」を参照してください。