Stingray に実装されている HumanIK ツールを使用することで、ゲーム キャラクタの足のピンをすばやく設定し、動的な地表でも足が地面を滑らないようにすることができます。HumanIK フロア コンタクトを使用することで、足の角度と位置自体は動的で、リアルなモーションの範囲を維持しながら体の残りの部分が足の位置に自然に反応します。
このトピックでは、HumanIK プラグインを使用してフロア コンタクトを設定する方法について説明します。フロア コンタクトでは、地表のトポロジを考慮するように、ロコモーション クリップ(またはアニメーション コントローラ全体)をライブで適合できます。
たとえば、平坦な地面で記録されたアニメーション クリップは、斜面、でこぼこな地表、階段で適切に再生するためにワープできます。
(このトピックは、ムーバや物理学を含む、HumanIK キャラクタ全体を設定するために必要なすべての情報を扱っているわけではありません。)
Maya または MotionBuilder で、Character Controls を使用してキャラクタ モデルをキャラクタライズします。
注: フロア コンタクトを設定する場合は、キャラクタライズに足のマーカーが含まれていることを確認することが重要です。足のマーカは、足のジョイントの周辺にあるメッシュの厚さを考慮することで、ゲーム エンジンで足の接触が正確に行われるようにします。手のフロア コンタクトを有効にする場合には(キャラクタがかがむ場合など)、手にもマーカーが含まれている必要があります。
Stingray で、新しいレベルを作成します。「レベルを作成またはロードする」を参照してください。
キャラクタライズされたキャラクタを読み込み、読み込みプロセス中に Skeleton に対して New or update skeleton を選択して名前を入力し、新しいスケルトンを作成します。
キャラクタ ユニットはまだレベル内に配置しません。
ヒント: プロジェクトの 'content/units フォルダを確認することで、モデルが適切にキャラクタライズされていることを確認することができます。キャラクタライズされたキャラクタを読み込むと、Stingray によって .character ファイルが作成されます(「CharacterName.character」)。
キャラクタ アニメーション クリップを含む FBX ファイルを読み込みます。Import FBX オプションで、Animations 以外のオプションをオフにして、このキャラクタ用に以前に作成されたターゲット スケルトンを選択します。
ほとんどのオートデスクのコンテンツ作成ソフトウェア(3ds Max、Maya、Maya LT、MotionBuilder)には、いくつかの一般的なモーション キャプチャ クリップが付属しています。または、Creative Market からクリップを購入することができます。これらのクリップには通常、足のマーカーなどを含む、キャラクタライズされたスケルトンが既に含まれています。
モーション キャプチャ クリップ用にアニメーション コントローラをセットアップするします。
Asset Browser から Animation コントローラにアニメーション クリップをドラッグします。コントローラは、これらのクリップに対して必要に応じて状態を作成します。
ランタイムでアニメーション クリップの状態をコントロールするイベントを追加します。
Asset Preview でキャラクタのアニメートが開始されます。
作成した新しいレベルをロードします。「レベルを作成またはロードする」を参照してください。
レベル内にキャラクタ アセットを配置します。(Asset Browser からドラッグ アンド ドロップします。)
床を表すジオメトリをシーンに追加します(スケールされた立方体など)。
衝突オブジェクトとして機能するように床オブジェクト(立方体)を設定します。
立方体をダブルクリックして Unit Editor を開きます。
階層ビュー パネルで立方体オブジェクトを右クリックして、Create Physics Actor を選択します。
Properties パネルの Physics で、Actor Template を Keyframed に設定します。
HumanIK を有効にします(既定では無効になっています)。
HumanIK フロー ノードを使用して HumanIK をコントロールできます。レベル フロー グラフとユニット フロー グラフの両方がサポートされています。
Event > Level Loaded イベントがトリガされたときに、レベル フロー グラフで HumanIK を有効にできます。
ライフタイム中にキャラクタが使用する可能性があるすべてのコンストレイントをキャラクタに備えさせます。この場合は、フロア コンタクトに関連するコンストレイントです(Full Body Plant コンストレイントと Legs Plant コンストレイント)。
この部分は通常、Unit > Unit Spawned イベントがトリガされたときに、ユニット フロー グラフで行われます。
または、LUA を介して HumanIK の有効化と設定を行うこともできます。
これらのフロー ノードを設定して、レベルをテストします。
レベルのテスト中に入力コントローラを使用してキャラクタのモーション クリップがトリガされるように、Input controller ノードを追加して Animation > Send Animation Controller Event を設定します。
ヒント: 任意の時点で、「Blend Alpha」値を 1 または 0 に設定することでフロア コンタクト コンストレイントをスムーズに有効または無効にすることができます。これは、HumanIK > Character Tune Constraints > HumanIK Set Blend Alpha フロー ノードを使用して行うことができます。ジャンプなどを扱うときには、コンストレイントを無効にしてから再度有効にすることが役立つ場合があります。
HumanIK フロー ノードを追加して、IK コンストレイントのテストと調整を行い、キャラクタをリターゲットしてルックアット コンストレイントを設定します。
「例: フローを使用した HumanIK」を参照してください。