アニメーション コントローラの状態

状態は、キャラクタが行っている動作に対応します。状態は、歩く、走る、ジャンプする、アイドル状態などを示します。各状態は、キャラクタがその状態になったときに再生される特定のアニメーション、またはアニメーションのミキシングに関連付けられています。キャラクタは、一度(レイヤごと)に必ず 1 つの状態にあります。

状態のグラフでは、状態は状態間で発生しうるトランジションを示すボックスと矢印で表されます。トランジションはアニメーション イベントによってトリガされ、特定のトランジションをトリガするアニメーション イベントの名前がトランジションの矢印にともに表示されます。

Anim Controller Editor の状態を使用するには:

目的 手順
状態を選択および移動する クリックおよびドラッグします。
コピーと貼り付けに複数の状態を選択する [Shift]を押しながらクリックします。
状態の選択をグループの状態に移動する 状態の選択を、グラフまたはツリー ビューのグループの状態にドラッグ アンド ドロップします。
新しい状態を作成する グラフまたはツリー ビューで右クリックし、ポップアップ メニューから選択します。
2 つの状態間のトランジションを作成する トランジション前の状態の小さいボックスを、トランジション後の状態までドラッグします。

このエンジンは、さまざまな効果を実現するために、多様なアニメーション状態のタイプをサポートしています。サポートされる状態は次のとおりです。

クリップの状態

これは最も一般的な状態です。これは、単一のアニメーションが再生されるだけの状態です。状態の異なる設定については、「クリップの状態プロパティ」で説明しています。(これらの設定の多くは、他のタイプの状態でも利用できます)。

空の状態

空の状態は、アニメーションがまったく再生されない状態です。その下にあるレイヤの光を透過させる場合に、上位レイヤに使用すると便利です。

追加のクリップの状態

クリップの状態と同じですが、追加のクリップ アニメーションを再生します。追加のクリップ アニメーションは、それ以外のすべてのアニメーションを評価した後に、キャラクタに適用されます。通常、反動砲や衝突の反動のような特殊な効果を適用するために、上位レイヤに配置します。

ブレンドの状態

ブレンドには次の 3 つの種類があります。

1D および 2D ブレンド空間の状態はシンプルで簡単であるため、多くの場合これらを使用して開始するのをお勧めします。これらの状態は、アニメーションに挿入してアニメーションを制御する変数を提供します。状態をブレンドする箇所に対して数字を入力します。

カスタム ブレンドの状態はより複雑です。カスタム ブレンドの状態は、異なる重みを持つ複数のアニメーションをミキシングします。

時間の状態

時間の状態では、状態の再生ヘッドを変数に基づいて制御できます。(ゲーム エンジンに対するすべての更新で、変数を使用してどのフレームを評価するかを指定します)。

独自の再生によって制御されるクリップの時間ではなく、時間の状態は 1 つの値で時間を制御できます。これは、1 つのパラメータを選択して別のパラメータで制御する、Maya または Maya LT のドリブン キーの設定(Set Driven Key)と同様に動作します。この場合は、時間はパラメータによって制御されます。

このエンジンは入力変数を取り、表示されるフレームの時間を制御するために使用します。スクリプトが時間変数を変更しない限り、時間の状態は同じフレームでフリーズしたままになります。

時間の状態を使用できる例としては、異なる角度で射撃するように設定できる榴弾砲が挙げられます。各角度に対して榴弾砲の設定を持つアニメーションを作成でき、その後、時間変数を使用して角度を設定します。

たとえば、銃を真っすぐ前に向けた後に、上向きするとします。0 が前方で 1 が上向きの 0 ~ 1 の float など、変数を使用して直接制御できます。

ラグドールの状態

ラグドールの状態は、特定のラグドールをアクティブ化します。ラグドールの設定方法の詳細については、下記のラグドールの説明を参照してください。

グループの状態

複雑なキャラクタのアニメーション ステート マシンには、数百もの状態を含めることができます。この時点での状態のグラフは、雑然として読みにくくなります。

グループの状態は、その複雑さを回避する方法を提供します。関連する状態のセットに整理することができます。たとえば、Climbing に関係するすべての状態(Climbing Up、Climbing Down、Climbing Jump)を、1 つの Climbing の状態にグループ化することができます。

その他の状態と同様に、グループの状態からまたはグループの状態へのトランジションを作成できます。ネストされた状態をトランジション元に明示的に設定しない限り、既定でグループの状態からのトランジションが、グループの状態のすべての状態に適用されます。

このグループ内の特定のネストされた状態に対して特定のトランジションが必要な場合は、グループからの追加のトランジションを作成してから、トランジション元のネストされた状態に対してその From State を明示的に設定することによって、すべての状態からのトランジションをオーバーライドできます。

グループの状態へのトランジションに関しては、トランジション先のネストされた状態を To State ドロップダウン メニューから選択します。(これについては、「トランジション」セクションで詳細に説明しています)。

目的 手順
グループ内をナビゲートする
(グループの状態内の状態を表示する)
グループの状態をダブル クリックします。
グループの状態以外に戻る バックグラウンドをダブルクリックします。
グループの状態を作成する [Ctrl]+[G]
グループの状態をグループ解除する [Ctrl]+[Shift]+[G]
グループに状態を移動する Anim Controller ウィンドウのグラフ ビューまたはツリー ビュー内のグループに状態をドラッグする

グループの状態の複数のネストされたレベルを持つことができます。

グループの状態にコンストレイントとミュートされたレイヤを追加することができ、そのすべての子がこれらを継承します。(それらには、その他の状態を持つことができる以外のものはありません)。

ショートカットの状態

状態のグラフでは、状態がグループ内でネストされているかどうかに関係なく、状態間のトランジションを作成できます。

ショートカットの状態の目的は、ステート マシン グラフで近接して配置されていない状態間のトランジションを簡単にすることです。

ショートカットの状態は、単にそのレイヤ内の別の場所の状態への参照です(異なるレイヤの状態間のトランジションは、異なるステート マシンにあるため作成できません)。

Target > ショートカットの状態が「指す」状態です。既定で、Target はこのグループです。(ショートカットが内部にあるグループ)。

このショートカットからのトランジションは、そのグループからのトランジションとして処理されます。ショートカットからのトランジションをグループ内の他の状態に置くと、グループ内の他のすべての状態からのトランジションを、たった今接続した状態に作成します。

警告: トランジションがトリガされるたびに、ブレンド中でもすべてのフレームを取得する場合があります。グループからのショートカットを使用する場合、すべてのフレームにイベントを送信していないことを確認します。送信している場合は、それ自体にトランジション/ブレンドが繰り返し行われるためです。

TransitionSwitch

トランジションのターゲット状態をランタイムで選択できるトランジション ノードです。ターゲット状態の選択は、式をランタイムで評価した結果に応じて行われます。

TransitionSwitch ノードには開始トランジションと複数の終了トランジションがあります。開始トランジションは TransitionSwitchEntries と呼ばれ、条件付きのトランジションをトリガするアニメーション イベントが含まれています。終了トランジションは TransitionSwitchExits と呼ばれ、さまざまなブレンド設定とアニメーション状態のターゲットが含まれています。また、終了トランジションごとに設定された値の間隔も表示されます。TransitionSwtich ノードはランタイムで式を評価し、評価された式に対して順番にテストされた値の間隔に応じて、終了トランジションに切り替わります。

TransitionSwitch ノードの式には、現在のアニメーション コントローラの既存の変数名を指定できます。また、sincosabsmatchmatch_2dmatch_rangematch_range_2d などの演算子を含めることができます。式に rand 演算子を含めて、レイヤ内のシードから乱数を生成することもできます。C または LUA で、レイヤごとに乱数ジェネレータのシードを設定できることにご注意ください。

開始トランジションと終了トランジションの名前およびプロパティを編集したり、終了トランジションの間隔の範囲を示す最大値/最小値を変更したり、上下矢印を使用して各終了トランジションの間隔の順番を並べ替えたりすることができます。