HumanIK キャラクタの構造

 
 
 

Human IK ソルバは、キャラクタのノードが特定の標準的な配列で接続されていることを求めます。たとえば、右肩は右肘のペアレント ノードで、右肘は右手首のペアレント ノードになるといった具合です。HumanIK 生体力学モデルは、これらのノードの動く方法についてのいわば知識を備えています。ソルバが 1 つまたは複数のノードを動かして IK エフェクトまたはソース アニメーションの実行時の要求を満たす必要がある場合、ソルバはこの組み込まれた知識を利用して新しいポーズを構築します。

HumanIK がこの生体力学モデルをキャラクタに適用するには、ユーザ用にビルトインされたこのマッピングで既定の HumanIK スケルトンを作成する(既定の HumanIK スケルトンを作成して定義する)、または HumanIK で認識されたノードをキャラクタの既存のスケルトン内にあるジョイントにマップする(既存のスケルトンを HumanIK 用に定義する)必要があります。 ( HumanIK スケルトン定義を作成するも参照してください。)

既存のスケルトンをマップする場合、HumanIK で必要な 15 種類のノードすべてをマップする必要があります。 これにより、キャラクタのスケルトンの主な要素を識別できるようになります。15 種類の必須ノードのキャラクタ化が行われていないと、実行時に HumanIK でキャラクタを制御できません。キャラクタ コントロール(Character Controls)では、これらの必須ノードをすべて正常にマップするまではキャラクタ化を保存またはロックすることはできません。

また、キャラクタのスケルトンに存在するその他のボーンについても、その他のオプションの HumanIK ノードにできるだけ多くマップすることを強く推奨します。これにより、実行時に HumanIK で構築されるポーズの精度が上がり、より本物らしく見えます。次の各セクションで、どのボーンをどのノードにマップするかを判断するための指針を示します。

注:まだキャラクタ スケルトンを構築しておらず、Maya のスケルトン ジェネレータ(Skeleton Generator)を使用して構築する予定の場合、キャラクタの構造を定義するためにキャラクタのジョイントを明示的にマップする必要はありません。 詳細については、既定の HumanIK スケルトンを作成して定義するを参照してください。

必須ノード

HumanIK ソルバで必須の 15 種類のノードは、キャラクタ(Character)ビューのフル ボディ レイアウトに表示され、名前の一致(Name Matching)ビューの必須(Required)グループにグループ化されます。

これらの必須ノードはキャラクタのスケルトンの主なジョイント、つまり足首、膝、ヒップ、脊椎のベース、肩、肘、手首、頭を特定します。スケルトンのどのボーンをどのノードにマップするかは、一般的には簡単です。

ノード マップ先
Hips キャラクタの脊椎と脚のチェーンのペアレントになっているボーン
LeftUpLeg/RightUpLeg 大腿部の最初のボーン
LeftLeg/RightLeg キャラクタの下腿部の最初のボーン
LeftFoot/RightFoot キャラクタの足首から足に向かって伸びている最初のボーン
Spine 脊椎の中で Hips ノードにマップしたボーンより上にある最初のボーン。これは脊椎の根元を表します。
LeftArm/RightArm キャラクタの上腕の最初のボーン
LeftForeArm/RightForeArm キャラクタの前腕の最初のボーン
LeftHand/RightHand キャラクタの手首から手に向かって伸びている最初のボーン
Head キャラクタの脊椎の最後の完全なボーン、すなわち頭の天辺ではなく、首のチェーンの一番最後の完全なボーン。これは通常、頭のスキニングを制御するボーンになります。
注:フル ボディ レイアウトでは、リファレンス ノードと HipsTranslation ノードの 2 つのオプション ノードも表示されます。です。これらのオプション ノードの詳細については、後述の特殊ノードを参照してください。

脊椎と首のノード

HumanIK ソルバは、最大 9 個の追加の脊椎ノード(Spine1~Spine9)と最大 10 個の首ノード(Neck と Neck1~Neck9)をサポートしています。これらのノードは下から上に向かって番号が付けられ、小さい番号ほどヒップに近く、大きい番号ほど頭に近くなります。

手と足のノード

手と足は HumanIK ではまったく同じです。それぞれの足と手に同じタイプのジョイントを含めることができます。ただし、キャラクタのそれぞれの足と手は、独立して定義します。これにより、各キャラクタの手足の構成を複雑にすることができます。たとえば海賊のキャラクタに、足首より下にジョイントがまったくない義足が 1 本、足指の根元に単一のジョイントはあるが足指の関節が自由には動かないブーツをはいた足が 1 本、関節が完全に自由に動く手が 1 本、指が何本か欠けてけがをした手が 1 本設定することができります。

指と足指のノード

キャラクタ コントロール(Character Controls)定義(Definition)タブを使用すると、各手足に最大 6 本の足指または指を設定できます。 通常の足と手の指は、左から右に、Thumb、Index、Middle、Ring、Pinky と呼ばれます。HumanIK は、ExtraFinger と呼ばれる追加の 6 本目の指または足指の使用をサポートしています。ただし、右手、左足、右足と同様、残りの指のジョイントは、同じ命名規則に従います。

指のベース ノードと足指のベース ノード

オプションの指のベース ノードと足指のベース ノードは、キャラクタの手足の内側、指と足指が曲がるところにジョイントを形成します。これらのノードを最もよく使うのは、それぞれの指または足指の完全な関節は必須ではなく、指または足指を関節部分で曲げたほうがリアリティが増すような場合です。たとえば、つま先が閉じた靴をはいた人間のキャラクタで足指のベース ノードを使用すると、個々の足指にノードを定義しなくても、足が足指のベースのところでヒンジのように曲がります。

特殊ノード

前述の各ノードに加えて、HumanIK ではスペシャル エフェクト用に次のノードをサポートしています。

Shoulder ノードと ShoulderExtra ノード

HumanIK は、ボディの両サイドの 2 つの肩ノードをサポートします。これにより、腕を回して上げたときの人間の肩の動きをシミュレートできます。

スケルトンの、脊椎と、LeftArm または RightArm ノードにマップされたボーンの間にボーンが含まれる場合、これらのボーンを LeftShoulder、RightShoulder、LeftShoulderExtra、RightShoulderExtra ノードにマップできます。最初に肩ノードをマップする必要があります。LeftShoulderExtra ノードは、LeftShoulder ノードがマップ済みの場合のみマップできます。

ロール ノード

ロール ノードでは、キャラクタの上腕部、前腕部、大腿部、下腿部のボーンをマップできます。子ロール ノードがあるノードに HumanIK ソルバがロール回転を加えると、ペアレント ノードからそのロール回転の一定のパーセンテージを抽出し、代わりに子ロール ノードに適用することができます。このプロセスをロール抽出と呼びます。ロール抽出は、二足歩行と四足歩行の動物の腕と脚がその軸のまわりを実際に回る方法をシミュレートします。腕や脚の先の方のより適切な位置からスキン デフォメーションを制御できるため、スキニングされたキャラクタに作成したアニメーションのリアリティが大きく向上します。ロール ボーン動作を定義するも参照してください。

Reference

このノードは、キャラクタの全体的なトランスレーション、回転、スケールに関するオプションのリポジトリとして用意されています。ヒップの概念上のペアレントと考えてください。

ほとんどの場合、Reference ノードを使用する必要はありません。主に次のような特定の状況で使用することを想定しています。

  • モデルのヒップにキャラクタの全体的なトランスレーション、回転、スケールを定義するペアレントが存在する場合。この場合、Reference ノードを使用して、そのペアレントのデータを HumanIK に同期させると便利です。
  • アニメーションのリターゲッティングを行う際、HumanIK が強制的にターゲット キャラクタをソース キャラクタの動きに完全に追従させることができます。この場合、Reference ノードを使用することが、ターゲット キャラクタの全体的なトランスレーション、回転、スケールを変更する唯一の手段です。

HipsTranslation

このノードは、ヒップのトランスレーション用の独立したリポジトリとして使用します。キャラクタのこのノードを定義したときに、HumanIK ソルバでキャラクタのヒップ(Hips)ノードのトランスレーションをオフセットする必要がある場合、最終的なトランスレーションは、ヒップ(Hips)ノードにマップされたボーンではなく、HipsTranslation ノードにマップされたボーンに保存されます。

既定では、ヒップの回転は、HipsTranslation ノードが定義されていても、ヒップ(Hips)ノードに保存されます。 ただし、HumanIK を構成して、ヒップの回転を HipsTranslation ノードに保存するようにできます。HipsTranslation ノードを使用して、ソース キャラクタの軌跡をターゲット キャラクタにリターゲットすることもできます。

関連項目