UnrealEngine5のアニメーション基礎講座

14.4K Views

September 07, 24

スライド概要

富山ビジネス専門学校 ゲームカンファレンスでの講演資料です。

profile-image

Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

UnrealEngine5 のアニメーション基礎講座 Senior Software Engineer, Developer Relations Takashi Suzuki 2024 Epic Games Japan

2.

State of Unreal | GDC 2024 https://www.youtube.com/watch?v=0H63U0V11HI Unreal Engine 5.4: Animation Deep Dive | GDC 2024 https://www.youtube.com/watch?v=u9Z8CK561_Y

3.

FK/IK スケルトン リターゲット モーション マッチング アニメーション ブループリント コントロールリグ ブレンド

5.

Begin Play | Animation @ EPIC Developer Community https://dev.epicgames.com/community/learning/tutorials/Pd0b/unreal-engine-begin-play-animation

6.

Animation Ecosystem for Game Development https://dev.epicgames.com/community/learning/courses/2Lz/unreal-engine-animation-ecosystem-for-g ame-development/yp13/unreal-engine-animation-ecosystem-for-game-development-overview

7.

https://www.youtube.com/watch?v= FzTqrUlXg50 猫でも分かる UE5.0, 5.1 におけるアニメーションの新機能について https://www.youtube.com/watch?v=FzTqrUlXg50

8.

猫でも分かる Control Rig UE4.25 版 https://www.youtube.com/watch?v=loN69BeLba4

9.

Game Animation サンプル https://www.unrealengine.com/marketplace/en-US/product/game-animation-sample

10.

外部ツール インポート アセット 編集 制御 利用

11.

インポート 外部からデータを取り込む アセット アニメーションで扱う中心的アセットたち 目次 制御 アニメーションを組み合わせてキャラクターを動かす 編集 エディター内編集 TIPS 最適化など

12.

インポート 外部からデータを取り込む アセット アニメーションで扱う中心的アセットたち 目次 制御 アニメーションを組み合わせてキャラクターを動かす 編集 エディター内編集 TIPS デバッグや最適化など

13.

FBX インポート Live Link インポート Alembic Interchange Framework

14.

FBX インポート ● DCCツールから出力した FBXファイルをプロジェクトに取り入れる ○ スケルトン ○ メッシュ ○ アニメーション ○ モーフターゲット ○ カーブ

15.

Interchange フレームワーク ● ● ● アセットインポート /エクスポートのカスタムフレームワーク ランタイムでも動作可能 UE5.4 で正式リリーズ済み

16.

インポート 外部からデータを取り込む アセット アニメーションで扱う中心的アセットたち 目次 制御 アニメーションを組み合わせてキャラクターを動かす 編集 エディター内編集 TIPS 最適化など

17.

アセット スケルトン アニメーション シーケンス スケルタルメッシュ

18.

スケルトン

19.

スケルトン アセット メタデータ ミラーリング ソケット 通知 バーチャル ボーン ブレンド マスク カーブ ブレンド プロファイル リターゲット 互換スケルトン IK リターゲット 二足歩行の~ IKリグ

20.

ソケット /バーチャルボーン ● ● スケルトンに追加できる仮想のボーン Socket ○ 武器等のアタッチ利用する ○ オフセット調整 ○ Epic Developer Community > learnning ■ Animation Ecosystem for Game Development ● Virtual Bone ○ スケルトン中の他のボーンに自動的に追従 ■ 例) Root の下にぶら下がっているが位置は左手に追従 ○ IKなどで利用 ○ 多くのボーンを経由する末端のボーンは複雑なモーション制御のブ レが伝播してふらふらと漂ってしまう (泳ぐ)ことがあるが、ツリー内で 複雑な制御が加えられない場所にバーチャルボーンを配置すること で、ボーンを複雑な制御から守ることができる

21.

カーブ ● 浮動小数点のパラメータを追加 ○ マテリアルパラメータへの自動設定 ○ モーフターゲットへの影響制御 ○ ポーズアセットでの参照 ○ ゲームロジックでの参照 ● スケルトンでのカーブ ○ モーフターゲットやマテリアルで 利用する場合スケルトン内に定義を書いて チェックを入れる必要がある

22.

アニメーションのリターゲット ● スケルトンに紐づいているアニメーションを 別のスケルトンでも利用できるようにすること ● UE4 ○ ○ ○ ● UE5 ○ ○ ○ 同一スケルトンでのリターゲット 異なるスケルトンでのリターゲット (リターゲットマネージャ ) CopyPoseFromMesh 互換スケルトン IKリターゲッタ RetargetPoseFromMesh

23.

同じスケルトンでの リターゲット ● スケルトンを共有するしている場合アニメーションを流用できる ● 色々なスケルタルメッシュを一つのスケルトンにマージしていく ○ スケルトンボーン数の肥大化 ■ スケルトンエディタでの操作性の低下 ■ エディタでのアニメーションロード速度の低下 ● 単純な体格の違いはリターゲットオプションの調整で解決 スケルタルメッシュ アニメーション スケルトン スケルタルメッシュ

24.

【UE4】 リターゲットマネージャ ● UE5にはありません ● スケルトン > リターゲットマネージャ ● 静的にアニメーションをリターゲット

25.

互換スケルトン ● 似通ったスケルトンを指定することで エンジンが勝手に解釈して 同じスケルトンとして扱われる ● アセット詳細 > Compatible Skletons

26.

IK リターゲッタ ● リターゲット設定アセット ● 変換元のIKRigと変換先IKRig設定 ● 静的またはランタイムでのリターゲットに利用 ○ アセットブラウザ > アニメーション選択 > 選択したアニメーションをエクスポート IKリターゲッタ アニメーション スケルトン IKRig IKRig スケルトン アニメーション

27.

IK リグ ● ソルバ設定 ● リターゲットチェイン設定 ○ 変換対象の IKRigを参照しながら設定 ● フルボディ IKで望ましくない動きをする時は 「フルボディIKボーンの設定」で調整

28.

二足歩行キャラクターの リターゲット ● ● ● ● ● UE5.4~ スケルタルメッシュを指定 出力エンジンが解釈可能なら IKRigを自動生成 ○ FKnownTemplateHierarchies アニメーションの変換 IKリターゲッタの出力

29.

Retarget Pose From Mesh ● ● ● ● ● ランタイムで IKRetargetアセットを利用してリターゲット 参照元のスケルタルメッシュコンポーネントが必要 リターゲッタ画面で正しく動いていれば動作 アニメーションアセットの増加無し 追加のIK解決コスト

30.

Copy Pose From Mesh ● ● ● UE4時代から 名前を使って同じ体格を持つ別のスケルタルメッシュの姿勢をコ ピー 同じスケルトンを共有している必要はない がボーン名は合わ せること

31.

同じスケルトン (スケルトン合成 ) UE4&5 インポート時に操作 スケルトンの 肥大化に注意 互換スケルトン UE5 スケルトンの詳細 簡単! アニメーションリターゲッタ UE4 IKリターゲッタ UE5 静的に アニメーション変換 IKRigが必要 二足歩行 ~略~リターゲット UE5.4 Retarget Pose From Mesh UE5 Copy Pose From Mesh UE4&5 IKRigを作成可能 ランタイム (ABPノード) コピー元コンポーネントを 指定する IKRigが必要 ボーン名を合わせる

32.

アニメーションシーケンス

33.

アニメーションシーケンス アセット 通知 ルートモーション 圧縮 アニメーション モディフィア 加算 アニメーション 同期マーカー

34.

アニメーション通知 /通知ステート ● ● アニメーションの特定のタイミング または範囲を指定して特定の処理を行う AnimNotify / AnimNotifyStateを 継承した C++クラス/ブループリント ○ 音声の再生 ○ VFXの生成 ○ モーションワープの制御 ○ 同期マーカー ○ プロジェクトの自作処理 ■ 攻撃判定の追加 ■ 入力受付 ■ などなど・・・

35.

アニメーションモディフィア ● ● AnimationModifierを継承した C++/ブループリント ○ ありがちな機能はエンジンに C++実装がある アニメーションを解釈して自動処理を行う ○ アニメーション通知 /通知ステート ■ 足音や同期マーカーなど ○ カーブの出力

37.

ルートモーション ● ● ルートボーンの移動量を移動量として扱う ゲームスレッドの負荷 が上がるので 大量のスケルタルメッシュを扱ったり ネットワーク対応タイトルの場合にに注意が必要

38.

移動 移動 移動 アニメ 更新 アニメ 更新 アニメ 更新 ゲームスレッド アニメーション評価 アニメーション評価 ワーカースレッド アニメーション評価 ワーカースレッド ルートモーション無し ルートモーションあり 移動 移動 移動 アニメーション更新 &評価 アニメーション更新 &評価 アニメーション更新 &評価 ゲームスレッド ワーカースレッド

39.

圧縮設定 ● ACL(Animation Completion Library) ○ UE4.25 ~ UE5.2 ■ マーケットプレースまたは githubから取得 ○ UE5.3 ■ エンジンプラグイン化 ○ UE5.4 ■ デフォルト設定 されるように ○ 設定で圧縮率やキーフレームの削減を設定できる

40.

その他のアセット - Pose Asset ● アニメーションシーケンスから作成 ○ 1フレーム = 1Pose ○ 作成ダイアログで名前リストを指定 ● 一つまたは 複数の ポーズをブレンド ○ フェイシャルモーション ○ 関節を理想的な動作に補正

41.

スケルタルメッシュ

42.

スケルタルメッシュ アセット マテリアル 物理アセット モーフターゲット LOD クロス シミュレーション Deformer

43.

物理アセット ● ● ● 物理界での形状指定 コリジョン形状同士の制約条件 (コンストレイント )の設定 用途 ○ コリジョン判定用 ○ 全身の物理シミュレーション用 ○ RBAN(リジッドボディアニムノード )

44.

数値入力 形状(ボディ/Shape) 手動追加 自動生成

46.

クロスシミュレーション ● ● ● 頂点単位のシミュレーション ボーンベースのアニメーションと組み合わせても良い UE5.3以降PanelCloth機能に移行 ○ https://dev.epicgames.com/documentation/ja-jp/unreal-engine/panel-cloth-edit or-overview Panel Cloth

47.

インポート 外部からデータを取り込む アセット アニメーションで扱う中心的アセットたち 目次 制御 アニメーションを組み合わせてキャラクターを動かす 編集 エディター内編集 TIPS デバッグや最適化など

48.

アニメーション モンタージュ 制御 アニメーション ブループリント コントロールリグ

49.

アニメーションモンタージュ ● ● ● AnimSequenceを並べて一連のモーションとして扱う セクション設定 ○ ループ ○ セクションジャンプ スロットノードを通じて姿勢に影響を与える

50.

セクション制御 ● ● ● セクション指定 ○ ループ ○ ジャンプ セクションのジャンプは MontageNotifyなどから行う事もできる もちろん独自の通知から行っても良い

51.

モーションワーピング ● モーションワーピング通知ステートと モーションワーピングコンポーネントを 組み合わせてモンタージュ再生中に位置を補間

52.

制御 アニメーションブループリント ポストプロセス ABP ブレンドノード リンク アニメレイヤー 慣性ブレンディング ブレンドスペース アニメーション シェアリング ブレンドノード モンタージュ スロット RBAN ステートマシン ボーンキャッシュ

53.

アニメーション ブループリント ● ● ● ● UAnimInstance を継承したアニメーション用のブループリント 二つのノードグラフ ○ UpdateAnimation ○ AnimGraph スケルトンを指定して作成 ->ABP

54.

Update Animation ● ● ● 必要な情報を ABPに取り込む ノードグラフ ○ 通常のブループリントで呼び出せるノードを利用できる ○ SkeletalMeshComponentのTick時に呼ばれる ゲームスレッドで実行される ○ 重いUpdateAnimationはゲーム全体のパフォーマンスを低下 ○ 特にスケルタルメッシュを沢山扱うタイトルでは問題になりやすい

55.

Update Animation ● ● ● 必要な情報を ABPに取り込む ノードグラフ ○ 通常のブループリントで呼び出せるノードを利用できる ○ SkeletalMeshComponentのTick時に呼ばれる ゲームスレッドで実行 されていた ○ 重いUpdateAnimationはゲーム全体のパフォーマンスを低下 ○ 特にスケルタルメッシュを沢山扱うタイトルでは問題に なりやすかった TIPS セクションで 最新の状況をお伝えします

56.

AnimGraph ● ノードグラフで定義された アニメーション評価や アニメーションブレンドを処理して 最終的なキャラクターポーズを作り出す

57.

テンプレート ABP ● ● ● ● スケルトンを指定しない ABP AnimGraphではすべてのアニメーションシーケンスが 指定できるが指定しなくてもいい 継承クラスは AnimGraph を実装出来ない ○ 固有実装は LinkedAnimLayer や PostProcessABP を検討 アニメーションを指定するだけで十分という シンプルなキャラクター制御に向く ○ ザコ敵等

58.

アセットオーバーライド ● ● ● テンプレート ABPまたは一般的な ABPを継承した ABPで利用できる Asset Override Editor ウィンドウ アニメーション指定などをオーバーライド

59.

PostProcess ABP ● ● スケルタルメッシュアセットに追加の ABPを設定 InputPoseノードでメインの ABPのポーズを受け取る

60.

メイン ABP : 評価 メイン ABP : 更新 ポストプロセス ABP : 更新 ポストプロセス ABP : 評価

61.

補助ボーン & ポストプロセス無し

62.

AnimGraph ノード紹介

63.

再生ノード ● 各種プレイヤー

64.

SequencePlayer 配 置 ● ● アニメーションシーケンスを評価する ドラッグアンドドロップで作成

65.

ピンで公開 ● ● ABPノードのほとんどのプロパティは ノードの引数ピン に変更することができる アセットをデータアセットなどの外部データ構造から 取り込む ○ データドリブンな ABPを設計

66.

PoseDriver ● ● ● ソースボーンの 回転の範囲 からポーズアセットを駆動する カーブを駆動することも可能 肩や股関節などの自由度の高い関節の補助骨の操作に利用

67.

ブレンドノード ● ● 各種プレイヤー https://dev.epicgames.com/documentation/ja-jp/unr eal-engine/animation-blueprint-blend-nodes-in-unr eal-engine

68.

ブレンドマスク ブレンドプロファイル ● ● ● スケルトンのツリーでボーン毎の設定を編集 ブレンドマスク ○ LayeredBlendPerBoneノードに付与 ○ ボーン毎にブレンド率スケール設定 ブレンドプロファイル ○ ボーン毎のブレンド速度設定 ○ アニメーションモンタージュ / 各種ブレンドノード

69.

慣性ブレンディング / デッドブレンディング ● ● アニメーション感のスムーズな遷移を行うため機能 デッドブレンディング (UE5.3~)は、慣性ブレンディングの代替ノード ○ 速度と距離からブレンド比を計算 ■ 速度と距離が逆になる場合も考慮されている ■ 大きく異なるポーズの遷移時に関節が壊れることはない ○ 複数の遷移リクエスト ○ 慣性ブレンドに比べて硬く見えるかも

70.

ボーン制御ノード ● 各種IKなど

71.

RigidBody ノード (RBAN) ● ● ● コンポーネントの固有空間 内でボーンに物理シミュレーショ ン 必要な形状だけを持った物理アセットを設定 SimulationSpace ○ 大きすぎる動きをスケール&制約してシミュレー ションを安定化させる ○ ComponentSpace ■ アクターの移動量を加工して伝播 ○ BaseBoneSpace ■ 基底ボーンまでのアニメーション アクターの移動量を合わせて加工して伝播 ○ WorldSpace ■ 移動量を加工しない

72.

RigidBody ノード設定 ● ● aaa The Gritty Reality of Real-Time Cloth and Rigid-Body Character Physics https://youtu.be/4NkNBImONJU?t=1892 RBAN Echo Ponytail Tutorial https://dev.epicgames.com/community/learning/tutorials/dLxx/unreal-engine-rban-echo-ponytail-tutorial

73.

構造化ノード ● ● 各種プレイヤー https://dev.epicgames.com/documentation/ja-jp/unr eal-engine/animation-blueprint-copy-bone-in-unrea l-engine

74.

ステートマシン 条件 によって ● ● ステート が変化していく 各ステート内にグラフがある ○ 入れ子構造

75.

Anim Preview Editor ● ABP内の変数を変更してアニメーションをプレビュー

76.

ステートマシンの入れ子構造 ● ● 条件 によってステート が変化していく 入れ子構造 ステートマシンの入れ子構造

77.

ステートエイリアス ● ● ● ステートのジャンプ先 どのステートからジャンプできるか チェックボックスで指定 ステートエイリアスの判定にも 負荷があることに注意

79.

ブレンドスペース ● 1次元または 2次元のグラフ上に アニメーションを配置してブレンド ○ 360度の歩行モーション ○ 静止 - 歩き - 走りなどの遷移 ● 長らくブレンドスペースはアセット ● ブレンドスペースノード がUE5から追加 ○ 各ポイント毎にグラフ が記述可能に ■ 入れ子構造

80.

リンクされたアニメーションレイヤー ● ● ● AnimGraph中に配置し別の ABPのアニムグラフで置き換える ランタイムで付け外しが可能 基本のテンプレート ABP+キャラ固有の ABP の組み合わせが実現できる

81.

アニメーションレイヤー インターフェイス ● ● ブループリントインターフェイスと非常によく似ている アニメレイヤーインターフェイスアセットを作成しレイヤーを定義する

82.

アニメーションレイヤー割り当て ● 呼び出し元・派生先の両方 のABPにアニメーションレイヤーを割り当てる

83.

アニメーションレイヤー 実装 ● 呼び出し元・派生先の両方の ABPにアニメレイヤーを割り当て る

87.

ポーズキャッシュ (save cached pose) ● ● ● 入力された姿勢を一時保存するノード ノードのスパゲティ化を防ぐ 疑似的にポーズの複製 が可能

88.

コントロールリグ ノード ● ● コントロールリグを ABP内で評価する 選択したコントローラーをピンとして ノードに露出させる

89.

コントロールリグ

90.

コントロールリグ ● ● ● ● ノードグラフで主にコントローラーの制御を通じて 骨格を制御する仕組み アニムグラフでの操作に比べて軽量 プロシージャルアニメーション ○ FootIk ○ LookAt ○ 補助骨制御 MayaなどのDCCツールで作られているアニメーション作成用 リグ ○ UnrealEditor上でアニメーション編集

91.

コントロールリグの例 CR_Mannequin_BasicFootI K ● ● ● ● コントローラー無し 腰と足のバーチャルボーンを地面へのトレースを使って加工 足のIK用ボーンを参照としてフルボディ IK ABPで使われることを想定

92.

コントロールリグの例 CR_Mannequin_Body ● ● 多数のコントロール シーケンサーなどで使われることを想定

93.

コントロールリグの例 CR_Mannequin_Procedural ● ● メインのボーンから多数の 補助ボーン を動かしている ABP_Manny_PostProcessから使われている

94.

コントロールリグの例 Face_ControlBoard_ CtrlRig ● MetaHumanの標準フェイスリグ

95.

モジュラーコントロールリグ ● ● ● ControlRigを作るもう一つの方法 互換性があれば非常に簡単にリグを作成できる リググラフ無し モジュール式コントロールリグ @ Unreal Engine 5.4、あの新機能を追え! https://www.docswell.com/s/EpicGamesJapan/KQR34N-ue-meetup-osaka-02#p58

96.

インポート 外部からデータを取り込む アセット アニメーションで扱う中心的アセットたち 目次 制御 アニメーションを組み合わせてキャラクターを動かす 編集 エディター内編集 TIPS デバッグや最適化など

97.

シーケンサー 編集 アニメーション モード

98.

LevelSequence (シーケンサー ) ● ● 広義の意味でアニメーション 全てのアクター /コンポーネントをタイムラインで制御 【初心者向け】UE5 シーケンサーと Movie Render Queue の使い方 猫でもわかる UE5 シーケンサー自動生成! https://www.youtube.com/watch?v=-qKSJLNLV94 https://www.docswell.com/s/squadstars/ZVVDDJ-2024-03-26-012103

99.

アニメーションモード ● ● ● エンジン内でアニメーション編集 コントロールリグによる操作 アニメーション編集サポート用のパネル

101.

アニメーションシーケンス編集 ● ● エディター内でアニメーションを作成&編集 ○ アニメーションシーケンスエディタ > 「シーケンサーで編集開始」 ○ ダイアログで「 コントロールリグにベイク 」 ○ レベルシーケンス上にキーが打たれて編集可能に ○ キーボードの Sキーでキー追加 コントロールリグを D&Dでも

102.

アニメーション書き出し ● ● スケルタルメッシュトラックで右クリック アニメーションシーケンスをベイクで書き出し

103.

リンクされたアニメーションシー ケンス ● ● ● アニメーションシーケンスとアニメーションモード編集画面がリンク 自動でアニメーションシーケンスを更新 アニメーションシーケンスからレベルシーケンスを開くことで編集

104.

インポート 外部からデータを取り込む アセット アニメーションで扱う中心的アセットたち 目次 制御 アニメーションを組み合わせてキャラクターを動かす 編集 エディター内編集 TIPS パフォーマンスなど

105.

モジュラーキャラクター構成 ● ● 組み合わせでキャラクターを構成する 衣装替え

106.

モジュラーキャラクター構成 ● モジュラー キャラクターで作業する ○ ● https://dev.epicgames.com/documentation/ja-jp/unreal-engine/working-with-modular-characters-in-unreal-engine スケルトンをマージしなければいけない場合に注意が必要 ○ 衣装毎 /キャラクター毎に独自のボーン構造 を持っているケース ■ ボーンベースのクロスシミュレーション ○ EPICとしては一つのスケルトンの ボーン数が 1000 を超える構成はオススメしていません ○ エディタの起動やエディタ上でのアニメーション読み込み速度が極端に低下する可能性 ○ メインのスケルタルメッシュは基本ボーンのみのシンプルなスケルトンを使って Copy Pose From Meshを利用する構成を検討

107.

FastPath ● 複雑な演算ノードが繋がっていると VMの実行速度が低下する

108.

Thread Safe Update Animation ● ● ● プロジェクトセッティング > 基本設定 > マルチスレッドアニメーションの更新を許可 にチェック ThreadSafe版UpdateAnimationに処理を移行 ○ BlueprintThreadSafeUpdateAnimation ■ Thread Safe 属性付き関数のみが呼び出せる ○ NativeThreadSafeUpdateAnimation UpdateAnimationがワーカースレッドで実行

109.

ThreadSafe 関数 ● ● ● ● ブループリント ○ 関数の詳細 > Advanced > ThreadSafe C++ ○ BluepirntThreadSafe メタデータ エンジンの関数でスレッドセーフとマークされている 関数は多くない 自己責任で ThreadSafe 関数を自作 ○ 参照先の書き込みタイミングで アクセスしないように注意が必要 UFUNCTION(BlueprintPure, Category = "ThreadSafeAPI", meta = (BlueprintThreadSafe)) static FVector GetVelocityFromAnimInstance(UAnimInstance* InInstance);

110.

プロパティアクセス ● ● ● ● ● AnimIntance/Actor/Componentのプロパティにダイレクトアク セス UpdateAnimation / AnimGraphのどちらでも利用可能 UpdateAnimation で自前でプロパティの取り込み不要 このノード自体は ThreadSafe Call Site ○ ThreadSafe ■ コピーは行われない 真のダイレクトアクセス ○ ThreadSafeでない場合 ■ 指定のタイミングで 変数のコピーが行われる CallSite

111.

完全なThreadSafe UFUNCTION(BlueprintPure, Category = "ThreadSafeMyCharacterAPI", meta = (BlueprintThreadSafe)) static APawn* GetPawnFromAnimInstance(UAnimInstance * InInstance); UFUNCTION(BlueprintPure, Category = "ThreadSafeMyCharacterAPI", meta = (BlueprintThreadSafe)) static FVector GetVelocityFromAnimInstance(UAnimInstance* InInstance); UFUNCTION(BlueprintPure, Category = "ThreadSafeMyCharacterAPI", meta = (BlueprintThreadSafe)) static FVector GetAccelerationFromAnimInstance(UAnimInstance* InInstance); UFUNCTION(BlueprintPure, Category = "ThreadSafeMyCharacterAPI", meta = (BlueprintThreadSafe)) static bool IsFallingFromAnimInstance(UAnimInstance* InInstance);

112.
[beta]
APawn* UMyThreadSafeLib::GetPawnFromAnimInstance(UAnimInstance* InInstance)
{
AActor* Actor = InInstance->GetOwningActor();
APawn* OutCharacter = Cast<APawn>(Actor);
return OutCharacter;
}
FVector UMyThreadSafeLib::GetVelocityFromAnimInstance(UAnimInstance* InInstance)
{
if (APawn* Pawn = GetPawnFromAnimInstance(InInstance))
{
return Pawn->GetVelocity();
}
return FVector::ZeroVector;
}
FVector UMyThreadSafeLib::GetAccelerationFromAnimInstance(UAnimInstance* InInstance)
{
if (APawn* Pawn = GetPawnFromAnimInstance(InInstance))
{
if (UCharacterMovementComponent* CMove = Cast<UCharacterMovementComponent>(Pawn->GetMovementComponent()))
{
return CMove->GetCurrentAcceleration();
}
}
return FVector::ZeroVector;
}
bool UMyThreadSafeLib::IsFallingFromAnimInstance(UAnimInstance* InInstance)
{
if (APawn* Pawn = GetPawnFromAnimInstance(InInstance))
{
if (UCharacterMovementComponent* CMove = Cast<UCharacterMovementComponent>(Pawn->GetMovementComponent()))
{
return CMove->IsFalling();
}
}
return false;
}

スレッドセーフ性は実装者が責任を負う

❢

114.

Chooser / MotionMatching ● ● CEDEC2024で解説セッションがあります! CEDEC Youtubeチャンネルをチェック! その動き、機械が見つけます!? モーション・マッチングで、やるぜ働き方改革! https://cedec.cesa.or.jp/2024/session/detail/s66614158a2fa9/

115.

まとめ ● アニメーション関連の機能はどんどん増加して追いかけるのも大変 しかし簡単に機能を利用できるような改良も常に導入され便利に進化し続けている ○ 互換スケルトン ○ 二足歩行キャラクターのリターゲット ○ コントロールリグ ○ リンクアニメレイヤー ○ デッドブレンディング ● エンジン内でのアニメーション編集機能を利用してゲームがリリースできるように ● パフォーマンス改善用の機能を理解してゲームのボトルネックにならないように気を付ける ○ RootMotionの過度の利用 ○ ControlRigの軽量VM ○ FastPath ○ ThreadSafeUpdateAnimation ○ UnrealInsights

116.

Thank you! — Epic Games Japan 2024