見出し画像

(継続31日目)魔法使いを理解する#6_ブループリント編_UE5ラーニング

やったこと

  • カスタムイベント「Shoot_Shock」に紐づくアニメーションブループリントに対する理解を深める。

参考にさせていただいた動画

研究対象

Essential Magic Staff Animation Pack

成果物

気づいたこと

  • statemachineは右クリックで検索して呼べる。

  • ①は初期では②のようになっている。

  • statemachineをクリックするとさらに深淵がのぞける。

  • Idle/Runなどはステートといい、例えばEntryから矢印を引っ張ってステート追加を押すとでてくる。

  • 魔法攻撃(左クリック)のコンボの途中で物理攻撃(Fキー)を押すと、物理攻撃のコンボ1につながる。(当たり前だけどそうなっていることが理解できてうれしい)

  • スタンスは、まず魔法攻撃を主とするモードがデフォルトに設定されている。

 

ChatGPTさんとの対話

Q 添付はUE5で、魔法使いキャラクターのアニメーションBPです。これについて、各ノードがどのような理由で設定されているのかこれはアクションRPGやfortniteのようなバトルロイヤルゲームにおいて、どのような意味、汎用性をもたらしますか?具体例を交えてわかりやすく詳細に教えてください。

A 添付いただいた画像について、Unreal Engine 5(UE5)のアニメーションブループリント(AnimBP)の構造と、特定のノード構成("State Machine"や"Output Animation Pose"など)について説明します。この構造は、アクションRPGやバトルロイヤルゲームにおけるキャラクターの動きや操作性にどのように影響を与えるかを詳しく解説します。


各ノードの意味と理由

  1. State Machine(状態マシン)

    • 意味: キャラクターが特定のアニメーション状態間を切り替える際に使用されるノードです。たとえば、「Idle(待機状態)」から「Run(走る)」、さらに「Attack(攻撃)」といった具合に、状態を管理します。

    • 理由: プレイヤー入力やゲーム内の条件に応じてスムーズかつ論理的にアニメーションを遷移させるために設定されています。

  2. Output Animation Pose

    • 意味: 最終的に計算されたアニメーションポーズをキャラクターモデルに適用するためのノードです。

    • 理由: アニメーションブループリントの中核的な役割であり、計算されたアニメーション結果をキャラクターに適用するために必須です。


バトルロイヤルやアクションRPGでの意味と汎用性

  1. リアルタイムのアニメーション切り替え

    • : バトルロイヤルゲームでは、プレイヤーは「移動」「ジャンプ」「射撃」「回避」など、非常に多くのアクションを瞬時に切り替えます。State Machineを用いることで、これらのアクションをスムーズに管理し、操作遅延を最小限に抑えることができます。

    • 汎用性: 入力デバイスやプレイスタイルが異なる多様なゲームでも同様の管理方法を適用可能です。

  2. モジュール設計による拡張性

    • : アニメーションノードを追加することで、新しい状態(たとえば、「しゃがみ」「特殊スキル発動」など)を簡単に実装可能です。

    • 汎用性: 新しいキャラクターや動作が追加されても、既存の構造に組み込みやすい設計です。

  3. 高度なプレイヤー操作性の実現

    • : プレイヤーが魔法を使う際、杖を振るアニメーションと同時にエフェクトを同期させる必要があります。この構造により、アニメーションとゲームロジックを密接にリンクさせることができます。

    • 汎用性: モーションキャプチャーを使用したリアルな動きや、AIキャラクターの独自挙動にも対応できます。

  4. コスト削減と効率的開発

    • : Fortniteのようなバトルロイヤルゲームでは、同じアニメーションブループリントを複数のキャラクター間で再利用することが一般的です。この汎用的な設計は開発コストの削減にも寄与します。

    • 汎用性: ゲームエンジンを共有する複数のプロジェクト間でも容易に移植可能です。


提案:次のステップ

  • アニメーションノードのカスタマイズ

    • 特定のアクション(例:魔法発動、回避、カウンター攻撃など)のための状態を追加する。

  • イベントの同期

    • アニメーション中にイベントを発生させる「通知」(AnimNotify)を設定し、よりリアルな操作感を実現。

  • デバッグ

    • 現在の「State Machine」内の遷移条件を確認し、意図通りの動作をしているかテストする。

何か追加の説明や具体的な実装についての質問があれば、ぜひお聞かせください!

Q このようなノードにしている理由を教えて。

A このノード構成について、以下に理由とメリットを説明します。


ノード構成の詳細

  1. Use Cached Pose "Locomotion"

    • 意味: 一度計算された「Locomotion(移動)」に関するポーズデータをキャッシュ(保存)し、それを再利用するためのノードです。

    • 理由: アニメーションの計算を効率化するために使用されます。「Locomotion」は通常、移動(歩く、走る、ダッシュなど)のアニメーションを管理しており、多くのゲームで頻繁に利用される重要な部分です。

  2. Output Animation Pose

    • 意味: キャッシュされたポーズを最終的な結果としてキャラクターに適用します。

    • 理由: ゲーム内で表示されるアニメーションを確定し、プレイヤーに出力するための必須ノードです。


この構成にしている理由

  1. アニメーション計算の効率化

    • 「Locomotion」の計算結果をキャッシュすることで、同じ計算を何度も繰り返さずに済むため、CPUやメモリの負荷を軽減できます。

    • 特に複雑なアニメーションブループリントを持つキャラクターでは、この効率化がゲームのパフォーマンス向上に大きく寄与します。

  2. 再利用性の向上

    • 「Locomotion」のポーズを他のアニメーション(例:攻撃やジャンプ)で組み合わせて使用する場合、同じキャッシュを使うことで整合性を保ちながら複数の動作を実現できます。

  3. 状態遷移の簡略化

    • キャッシュを利用することで、同じ「Locomotion」ポーズを他の状態でも参照可能となり、状態間の切り替えや管理が簡単になります。

  4. フレームレートの安定化

    • アニメーション計算の負担を軽減することで、ゲーム全体のフレームレートを安定させ、プレイヤー体験を向上させます。


バトルロイヤルやアクションRPGでの意味

  1. 頻繁な移動アニメーション

    • バトルロイヤルゲームでは、プレイヤーは移動アクションを頻繁に行うため、「Locomotion」のキャッシュ再利用は極めて効果的です。

  2. 多様な移動スタイル

    • プレイヤーが歩く、走る、ダッシュする、しゃがむなど、複数の移動スタイルを持つ場合でも、キャッシュされた「Locomotion」を利用することでスムーズな切り替えが可能です。

  3. パフォーマンス向上

    • 大人数が参加するバトルロイヤルのようなゲームでは、複数キャラクターが同時に動作するため、効率的なアニメーション処理が不可欠です。このノード構成はその要件を満たします。


提案

  • 拡張性:

    • 「Locomotion」に特化したキャッシュを他の機能(例:ジャンプ後の着地アニメーションや回避アニメーション)にも利用することで、さらに効率的な構造を構築できます。

  • テスト:

    • キャッシュされたポーズが正しく適用されているか、アニメーション遷移時のフレーム落ちがないかを確認するデバッグ作業を行うことを推奨します。

Q このノードの意味を初心者向けに詳細かつ丁寧に教えて。 Use Cached Pose "Locomotionをクリックした先のノードです。

A ノード構成の概要

  1. Use Cached Pose "Locomotion"

    • 意味: 「Locomotion(移動)」のアニメーション結果をキャッシュとして保存し、再利用するためのノードです。

    • 役割: キャラクターが移動している状態のアニメーションを他の動作と組み合わせる際に使います(例: 移動しながら狙いを定める)。

  2. Aim Blend

    • 意味: キャラクターの視点や方向(回転)を考慮してアニメーションを補間(Blend)するためのノードです。

    • 役割: キャラクターが上下や左右を向いたときに、体全体の向きが自然に調整されるようにします。

    • Aim Blendの登場場所

アニメーションBP_イベントグラフ
アニメーションBP_Locomotion(ステート)
アニメーションBP_idle to jog
  1. Break Rotator

    • 意味: キャラクターの回転データ(ロール、ピッチ、ヨー)を分解して個別に処理します。

    • 役割: カメラやキャラクターの向きを細かく制御するために利用されます。たとえば、視線の上下(ピッチ)を特定のアニメーションに反映します。

  2. AimOffset Player

    • 意味: キャラクターの「AimOffset(狙いを定める動作)」を管理するノードです。

    • 役割: キャラクターが特定の方向を向くアニメーション(例: 銃を構えて上や横を狙う動作)を適切に表現します。

※アニメーションオフセットを呼び出しているみたいですね。

UE4_BM_Aim_AO(上のほうのやつ)
UE4_WZ_Aim_AO(下のほうのやつ)
  1. Blend Poses by Bool

    • 意味: ブール値(True/False)に応じて、異なるポーズを切り替えるノードです。

    • 役割: 「魔法使いモード(Battle Mage Mode)」かどうかによって、異なるアニメーションを適用します。Trueの場合は戦闘時のモーション、Falseの場合は通常の移動モーションが使われます。

  2. State Machines(Normal, Locomotion, BM Combo など)

    • 意味: 各動作状態(例: 通常、移動、コンボ攻撃など)を管理するノードです。

    • 役割: キャラクターの動きをアニメーションとして制御し、条件に応じて状態を切り替えます。


  • State Machines_Normal

    • ダメージを受けていない状態のことをいってそう。

  • State Machines_Locomotion

  • State Machines_BM Combo


初心者向けの詳しい説明

  1. キャッシュを使う理由

    • キャッシュされた「Locomotion」のデータは、アニメーションを繰り返し計算する必要がないため、ゲームの動作を軽くする(パフォーマンスを向上させる)効果があります。

    • 例えば、「移動しながら狙いを定める」動作では、移動と視点の2つのアニメーションを組み合わせる必要がありますが、キャッシュを使うことで効率化しています。

  2. Aim BlendとAimOffsetの役割

    • Aim Blendはキャラクターが自然に体を向けるようにするため、プレイヤーの操作に応じたリアルな動きを実現します。

    • AimOffset Playerでは、キャラクターが「上を向く」「横を向く」など、細かい方向を指定できるので、戦闘や探索時の操作感が向上します。

  3. Blend Poses by Boolの使い方

    • True/Falseでアニメーションを切り替える仕組みは、ゲームの状態によって動きを変えるために重要です。

    • 例: 戦闘モードでは攻撃モーションを優先し、通常モードでは走る・歩く動作を優先する。

  4. State Machinesの活用

    • Normal: 通常状態でのアニメーション(待機、基本的な移動など)。

    • Locomotion: キャラクターの移動全般を管理。

    • BM ComboやWZ Combo: 特定の戦闘動作やコンボ攻撃の状態を管理。


実際のゲームでの応用例

  • 戦闘と探索の切り替え: プレイヤーが「探索モード」では静かに歩き回るが、「戦闘モード」になるとキャラクターの動作がアクティブに変わります。この切り替えを「Blend Poses by Bool」で実現しています。

  • 狙いを定めるアクション: 弓や銃を使うゲームでは、キャラクターが移動しながら特定の方向に狙いを定める動作が必要です。この時、Aim BlendAimOffset Playerを活用することで、正確な視点操作を実現します。

  • コンボ攻撃の実現: 「BM Combo」や「WZ Combo」などのState Machinesを使い、プレイヤーがボタンを連続で押すことで流れるようなコンボ攻撃を表現できます。

ChatGPTさんとの対話

Q 似たようなブレンドスペース1Dを組み合わせているようなのですが、それの理由を教えてください。(Locomotion_Idle to Jogの一部)

A この画像に示されているように、複数のブレンドスペース1Dが組み合わされている理由としては、キャラクターのアニメーションをより柔軟に制御するためです。以下のポイントで説明できます。

  1. 方向と速度の制御: このセットアップでは、異なる速度(例えば、前進と後退)のアニメーションを制御するために、ブレンドスペース1Dが使用されています。1Dのブレンドスペースは、特定の軸(ここでは速度)に基づいてアニメーションを補間するため、キャラクターの動きが自然になります。

  2. 複数のアニメーションの切り替え: それぞれのブレンドスペースが、前進と後退の動作に対応しています。例えば、「UE4_WZ_Jog_Start_Forward_Blendspace」は前進する動作を、「UE4_WZ_Jog_Start_Backward_Blendspace」は後退する動作を制御していると考えられます。これにより、速度と方向に基づいて適切なアニメーションが選ばれます。

  3. 条件付きのアニメーションブレンド: 画像にある「AND」ノードは、複数の条件を組み合わせて適切なアニメーションを選択するために使用されています。例えば、一定の速度範囲に基づいて前進または後退のアニメーションを切り替えることができます。これにより、異なるアニメーションをスムーズに切り替えられるため、自然な動きを実現できます。

このように、複数のブレンドスペース1Dを組み合わせることで、キャラクターの動きがよりダイナミックかつ多様なシナリオに対応できるようになります。

Q アニメーションBPにおいて、stanceの中身が添付1枚目のようになっています。WZもBMも中身はUse cashed pose staff main がoutput animation poseにつながっており、staff mainは添付2枚目のようになっています。このような設計になっている理由を初心者にもわかりやすく詳細に説明してください。(ハルシネーションがおこならないように注意してください)

A この設計について、初心者にもわかりやすく説明します。

1. アニメーションBPの構造(1枚目の画像)

1枚目の画像では、Stanceステートマシンの中に以下のステートが含まれています:

  • WZ: このステートは特定の動作(おそらく武器を持った状態)を表しています。

  • BM: このステートは別の動作(おそらくバトルモード)を表しています。

  • ステート間の遷移(Transition):

    • ステート間の矢印は条件付きでアニメーションが切り替わることを示します。

    • 例えば、Idle_BM_to_WZはBM(バトルモード)からWZ(武器モード)に切り替わる遷移を制御します。


2. スタッフメインの設計(2枚目の画像)

2枚目の画像では、Staff Mainがどのようにキャラクターのアニメーションを制御しているかを示しています。

キャッシュポーズ

  • Use Cached Poseノードを使用している理由は、計算済みのアニメーションを再利用してパフォーマンスを最適化するためです。

  • 一度計算したポーズ(例: Normalモードの動き)は複数の箇所で再利用されるため、無駄な計算を減らすことができます。

Aim Offset Player

  • UE4_BM_Aim_AOやUE4_WZ_Aim_AOは、キャラクターのエイム(視線や攻撃方向)の補正を行うためのノードです。

  • これにより、プレイヤーがカメラの向きを変えたときにキャラクターの頭や腕の向きがリアルタイムで調整されます。

Blend Poses by Bool

  • このノードは、Is Battle Mageという条件に基づいてBMモードとWZモードの間でポーズをブレンドします。

  • これにより、モードに応じたアニメーション(例: 武器を持つモードと通常モード)をスムーズに切り替えることができます。


3. この設計の利点

  1. パフォーマンス向上:

    • キャッシュポーズを使うことで、計算済みのアニメーションを再利用し、処理負荷を軽減できます。

  2. 柔軟性:

    • ステートマシンを使用することで、さまざまなアニメーションの切り替え条件を簡単に設定できます。

  3. モジュール化:

    • WZモードやBMモードを個別の構造に分けることで、アニメーションロジックが整理され、拡張や修正が容易になります。

  4. リアルな動き:

    • Aim Offsetを利用することで、プレイヤーがカメラを操作するたびにキャラクターの動きが自然に補正されます。


4. 初心者向けのイメージ例

この設計は、映画の「アクションシーンを撮影するカメラマン」のようなものです。

  • キャッシュポーズは、使い回し可能なカット(すでに撮影済みのシーン)。

  • Aim Offsetは、キャラクターの表情や視線を細かく調整する編集作業。

  • Blend Poses by Boolは、「戦闘シーン」か「日常シーン」のどちらを選ぶかの決定。

いいなと思ったら応援しよう!