【ラグドール復帰】ゲームキャラをリアルに倒し、自然に起き上がらせる方法:物理演算とアニメーションブレンドの落とし穴解説

※本サイトはアフィリエイト広告を利用しています。

ダウンロード

起き上がりアニメーションFBXと完成形ファイルのダウンロードはこちら

よっしー
よっしー

アニメーションはAdvancedLocomotionSystemのやつをUE5.6以降のマネキン用にリターゲットしたものです(ライセンス:EULA)。

完成系は、UE5.7のサードパーソンテンプレートからの差分のみです。

BluePrint

動画の後さらにちょこっと整理してあります。

よっしー
よっしー

コピペする場合は、先に関数を作ってからイベントを作りましょう。
貼り付けて右クリックして「Refresh Nodes」するとある程度参照エラーが自己解決します。
変数はエラー出てる箇所で右クリックして作れば大体OKですが、初期値が適切な値になっていないとバグの原因になるのでご注意ください。(Deadフラグが最初からTrueでお前はもう死んでいる状態みたいな罠)

BP_ThirdPersonCharacter

BP_ThirdPersonCharacter_Child

要点

AIにまとめてもらった要点です。(時間の精度は確認してないのでご参考程度に)

🕥 Phase 1: 物理シミュレーションの基礎と落とし穴 (02:00:00 – 01:20:00)

時間帯ポイント解説キーワード
00:05:30 – 00:06:24【物理の基本】当たり判定(コリジョン)の種類:単なる「当たり判定」と「物理的衝突」の違い、そしてラグドール処理には特定のプリセットが必須であることを解説。コリジョンイネーブル、クエリーオンリー vs フィジクス、プリセットの利用
00:06:36 – 00:07:32【動作のリアリティ】起き上がり時のロジックの修正:物理シミュレーションをただ解除するだけでは体が安定しないという問題(単なるフラグ制御の限界)を指摘し、ロジック制御の重要性を示す。フラグの管理、物理解除のタイミング、状態遷移の制御
00:09:33 – 00:13:24【最重要課題】位置情報のズレ修正:物理シミュレーションを解除した後、キャラクターのモデル(メッシュ)が「設計上の初期位置」に戻らないという、多くの開発者がハマる最重要ポイント。メッシュの位置リセット、座標の計算、初期化の必要性
00:21:16 – 00:22:07【物理挙動のバグ対策】ワープ移動によるオーバーシュート:テレポート(瞬間移動)を安易に使うと、カプセルが持っている仮想的な「移動エネルギー」がメッシュに乗り移り、キャラクターが吹き飛ぶという物理的な矛盾を指摘。テレポートフラグのリスク、衝突(コリジョン)の影響、エネルギーの伝播
01:02:38 – 01:03:26【高度な技術】回転軸の補正(オリエンテーション):倒れた時に体の「向き」が崩れたままだと、起き上がった時も自然じゃない。体の向き(骨盤から首へのベクトルなど)を基準に、キャラクター全体の回転を補正する必要があるというノウハウ。ヨー軸の調整、骨間のベクトル計算、回転の強制統一
01:17:14 – 01:17:39【アニメーションのスムーズさ】ブレンドの仕組みを理解する:ただ切り替えるだけでなく、アニメーションの「ブレンド(Blend)」機能を使って、倒れたポーズから次のポーズへ、時間差をかけて滑らかに移行させる方法。ブレンドイン/ブレンドアウト、時間経過によるなじませ方

🚧 Phase 2: 処理の最適化と安定化 (01:20:00 – 02:10:00)

時間帯ポイント解説キーワード
01:22:00 – 01:23:27【ロジックの安定性】イベント実行の仕組み(Delay vs Timer):単なる「ディレイ(待機)」はキャンセルされてしまう危険性があるため、確実な遅延処理には「タイマー(Timer)」を使うべきという、プログラミングフローの設計に関する重要な知識。タイマーの活用、イベントの予約、処理の確実性
01:25:42 – 01:26:46【究極のデバッグ】描画と計算のタイミングのズレ対策:アニメーションが「浮いたり、ブレたり」する現象は、処理の実行タイミング(Tick、Timer、Delayなど)のズレに起因することがある。その解決策として、DelayUntilNextTickのような微調整が必要。実行タイミングの統一、グリッチの原因究明、フレーム単位の同期
01:31:57 – 01:32:31【パフォーマンス最適化】処理負荷の管理:ラグドール中のキャラクターは物理計算をしているため、メインのロコモーション処理などの不必要な計算をスキップする、というパフォーマンス上の考え方。計算負荷の分散、フラグによる条件分岐、効率的な処理順序
01:39:23 – 01:40:24【AIの最適化】Tickからの脱却:全てのキャラクターを毎フレーム(Tick)処理するのは重すぎる。関心のないNPCなどは、**周期的なイベント(タイマーやLow Frequency Update)**で計算するべきという、ゲーム全体のパフォーマンス向上に繋がる大きな視点。処理負荷の軽減、Tickの代わりにタイマーを使用、スケールバック

コメント

タイトルとURLをコピーしました