アニメーションにブレンドツリーとステートマシンを使用する場合


13

3Dアニメーションキャラクター(Unity)で初めてゲームを作成した経験豊富なゲーム開発者の趣味で、ブレンドツリーとアニメーションステートマシンを使用するタイミングを判断するのに苦労しています。概念的には両方を理解していますが、Unityと他のソースの両方のチュートリアルで、キャラクターのアニメーションに使用されるブレンドツリーとアニメーションステートマシンの両方を見てきました。誰かが私を正しい方向に向けることができることを望んでいるのに、いつ/なぜ他の人よりも優れているのか分かりません。

私のゲームは3人称アクションRPG a'la WoWまたはKOTORまたはMass Effectです(私が知っている異なるシステムですが、視点と戦闘スタイルは高レベルでちょっと近いです)。攻撃、ブロック、偽装、死亡、ウォーキング、ランニング、ジャンプ、射撃などのアニメーションが大量にありますが、それらを自然にシーケンスする方法はわかりません。

移動に使用されるブレンドツリーを見たことがありますが、これはキャラクターの動きを滑らかにしようとするときに理にかなっていますが、そのブレンドツリーから攻撃状態に移行する方法がわかりません。等)。攻撃/死/回避の状態にモーション状態からブレンドツリーを作成する必要がありますか?ステートマシンだけを使用して、さらに制御できますか?ステートマシンには非常に注意が必要です。移行の肥大化は非常に一般的であり、ブレンドせずにジャンキーアニメーションシーケンスを作成する可能性が大きいと思われるためです。

Unityキャラクターコントローラーを使用し、独自のロジックスクリプトを記述してそれを駆動する予定です。AIには、組み込みのnavメッシュエージェントを使用します。キャラクターコントローラーアニメーションはAIアニメーションとは異なる方法で処理されますか?

洞察は大歓迎です!

ありがとう

回答:


21

私はUnityでMecanimとかなり協力してきましたが、それがどのように機能するかについてかなりよく理解していると感じています。

あなたが言うように、ブレンドツリーはほとんど間違いなく移動を行う方法です。ブレンドツリーは通常、アニメーションを継続的にブレンドして最終出力を作成する場合に使用します。プレイヤーにアバターの実行速度を制御できるようにします。

すべての単一のアクションは、個別の状態として保持するほうが適切である可能性が高く、移行できます。ゲームの強さに応じて、Any Stateを出発点として使用して、別のアニメーションが終了するのを待たずに、ジャンプや攻撃などにすばやく進むことを検討することもできます。

実行中のブレンドツリーからブレンドするための鍵は、transitionsを使用することです。Unityでトランジションをプレビューしながら、これをすばらしい外観にするための魔法はありません。慎重に計画し、微調整してください。多くの仕事は、トランジションを成功させるための基礎を持つアニメーターに依存しています。

トランジションを行う際に心に留めておくべきことは、それらのバランスが素晴らしく見えることを見つけ、プレイヤーに期待されるフィードバックを与えることです。クイックトランジションはゲーム感覚に最適であり、遅いトランジションは見た目は良いが、プレーヤーはコントローラーを捨てたいと思うかもしれません。

以下はやや単純なセットアップで、矢印は遷移の進み方を示しています。遷移は、入力の条件に基づいており、アニメーションが終了するか、特定の条件が満たされたときに終了します。これは、1つの状態が異なる条件に応じて他のさまざまな状態になる可能性があることも意味します。

ステートマシン

おそらく気づくのは、これがすぐに「スパゲッティ」の大きな山になる可能性があることです。この混乱の一部を回避する方法は、上記の画像にも含まれているAny Stateを利用することです。

いずれの国では、任意の時点から何かに移行することができるという利点を有します。トランジションを使用してアニメーションをブレンドすることもできますが、暗闇の中でもう少し作業する必要があります。設定中にさまざまな状態をプレビューできます。

言及していないのはLayersで、これはキャラクターを負傷させたり、すべての武器の脚に同じアニメーションを使用しながら異なる武器を運ぶために上半身をオーバーライドするのに非常に役立ちます。レイヤーもブレンドされ、徐々に調整できるため、たとえばキャラクターが多少傷ついたりする可能性があります。別の例は、他のすべてのアニメーションを同じに保ちながら、キャラクターの腕を空中で持ち上げます(キャラクターが降伏した場合など)。

しかし、堅実なアニメーションコントローラーのセットアップは1時間の仕事ではありません。ある程度の計画が必要です。ジャンプ、アイドル、ウォーク/ランブレンドツリーの2つの攻撃を行うシンプルなステートマシンをセットアップすることをお勧めします。また、Unity 5で導入された動作は、スクリプトの制御や操作に非常に役立つこともあります。

AIがプレイヤーコントローラーと同じように動作することは99%確信しています。これは、アニメーションが状態から状態へどのように移行するかを制御するスクリプトによってパラメーターが変更されることを考えます。

概要

  • 移動のためのブレンドツリー
  • アメリカシングル、定義されたアクションまたは単純なループ状態のため。
  • ジャンプのような一連の状態を整理するためのサブ状態
  • 遷移の異なる状態間でブレンディング/遷移する(状態もブレンドツリーであってもよいです)。
  • ベースアニメーションをオーバーライドまたは追加するためのレイヤー

したがって、ブレンドツリーを展開された状態と考えてください。これもパラメータ値に基づいて機能します。

少し長いあいさつですが、それが主題に光を当てることを願っています:)


あなたの素晴らしい説明のおかげで、これは今多くの意味を作る
weichsem

素晴らしい、喜んでお手伝いします:)
モーテンアンデルセン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.