Zenn
🧱

[Unreal Engine 5] 壁を破壊する (Chaos Destruction)

2025/02/13に公開

動作確認環境

Unreal Engine 5.5.3
Windows 11 23H2

手順

アニメーションと Niagara についてはこちらを参照。
https://zenn.dev/ssknaoya/articles/ad4ac23a724d71

壁を用意する

Mesh がどのように破壊されるか、あらかじめ仕込んでおく。

  • 破壊対象となる Static Mesh を Level に配置する。今回は StarterContent/Architecture/Wall_400x300 を使用。マテリアルには M_Brick_Clay_Beveled を設定。
  • Fracture Mode を選択する。
  • 破壊対象を選択した状態で Generate の New を押す
  • 適当な保存場所を選択し、生成する Geometry Collection に適当な名前を付け、Create Geometry Collection を押す
  • 左の Fracture の中から適用したい破壊パターンを選択し、右側の Fracture ボタンを押す。今回は Cluster を選択した。
    • デフォルトでは破片が塗り分けられたデバッグ描画になっている。元のマテリアルで表示したい場合は Fracture Mode で対象を選択して Shift + B を押す。
  • Selection Mode を選択して Fracture Mode を抜ける。




出来上がった破壊対象をコピーして使いまわしても良いが、その場合はすべて同じ割れ方になる。
手順を繰り返し、元は同じ Mesh でも破壊パターンを幾つか用意しておけば、より自然に見える。

アンカーの設定

壁の下部にアンカーを設定することで、壁全体がそのまま倒れることを防ぐ。
また、下部の残骸の一部がその場に残ることで、より「壁らしさ」が出る。

  • Content Browser の Settings で Show Engine Content にチェックを入れる
  • EngineData/Engine/EditorResources/FieldNodes/FS_AnchorField_Generic を Level に配置する
  • FS_AnchorField_Generic を壁の下部に配置し、サイズを適当に調整する
  • 壁を選択し、Initialization Field に配置した FS_AnchorField_Generic を設定する



FS_AnchorField_Generic の DebugTrue に設定するとデバッグ描画される。

壁の破壊処理を作る

Fracture Mode で作成した壁は Radial Force では破壊できない。
Physics Field を使用する必要がある。
今回は Physics Field のうちの Transient Field を用いる。

  • 一つ目の Add Transient Field では Physics TypeExternal Strain を指定し、Geometry Collection の結合にダメージを与える
  • 二つ目の Add Transient Field では Physics TypeLinear Velocity を指定し、破片を飛び散らせる

二つ目の Transient Field は無くても Radial Force で吹き飛ばすこともできる。
ただし Force と Velocity は吹き飛び方が違う。
Force はリアル寄りだが地味になりやすく、Velocity は重さを無視して加速度を設定するためか、派手だが嘘くさい。
併用が効果的かもしれない。

(Transient Field部分拡大)

参考:
https://www.youtube.com/watch?v=i5f1DevgDUs

以下は別の関数で実装されているが、一時的に Physics Field を発生させるという考え方は同じ。

https://zenn.dev/tw_trainingcamp/articles/137a075ee1f327

以下の動画ではメッシュ上の手足の位置にフィールドを発生させているため、リアル寄りの表現をしたい場合に参考になりそう。

https://www.youtube.com/watch?v=qEhSZRJon8M

弾をぶつけて破壊したい場合は以下を参照。
https://www.youtube.com/watch?app=desktop&v=cYyozU2sYk8&t=278s

Discussion

ログインするとコメントできます