自由自在な破壊表現がしたい!Chaos Destractionのパラメータ解読。

Chaos Destractionを設定したものの意外と思った通りに破壊できない。そんな悩みを持ったことはありませんか?今回はChaos Destractionで壁を吹き飛ばすために必要なMasterFieldの設定方法SeaJet_chさんが紹介する動画を元に自分用にまとめてみたいと思います。動画だと映像でわかりやすいですが備忘で見返すにはどこだっけ?と探す手間がいるので、ブログ記事としてまとめます。

またSeaJet_chさんでは解説されていない部分は、あそぽよが補足して付け足して説明を加えていきます。

結論

MasterField自体のスケールの大きさを変えることで壁を大きく貫通したMasterFieldを作成することで壁を吹き飛ばすようにできました。ただ吹き飛び方などはパラメータを調整する必要があるので動画を参考にまとめていきましょう。

あそぽよ解説動画

Chaos Destruction FS_MasterFieldで4種類の破壊表現を極めよう!Unreal Engine 5.6

 

 



 

SeaJet_chさんの動画

【UE5】MasterFieldやってみた!【その4】Chaos Destruction(破壊表現)【春日部つむぎのゲーム作ってみよう!】

というか公式のSeaJet_chさんのブログもあるようなのでそちらも参照してみましょう。

MasterFieldやってみた!【Destructionその4】【UE5】 - 春日部つむぎ no ゲーム作ってみよう!【UE5/UE4】
↑.srt file(JP,EN) Uploaded オープニング00:26 1.MasterField↓01:17 1-1.破壊プロセス↓01:41 1-2.デフォルト(基本設定)↓02:06 1-2-1.Field Falloff Shap...

力が加わる範囲

まず何かを破壊したい場合、破壊したい領域つまり力が加わる範囲を調整しましょう。その範囲を調整するにはFS_MasterFieldのスケールを変更することで可能です。

スケール

FS_MasterFieldの力が加わる範囲を大きくするには、ブループリントアクターであるFS_MasterFieldのスケールを調整して大きさを変えましょう。エディターから配置した場合は範囲が可視化されるのですが、ブループリントからスポーンした場合は範囲が可視化されません。

スポーン時の可視化方法


FS_MasterFieldブループリントとにらめっこしてスポーンしたことを可視化するのに2時間くらいかかりましたが、上の図のようにDebug変数をTureにしてSetVisibility関数を呼ぶことでゲームプレイ時でもFS_MasterFieldを表示させることができます。

パラメータ一覧

パラメータ説明(破片同士の接続を解除)

External Strain(外部ひずみ)

GeometryCollectionの破片同士の接続を解除して個々の破片にする。(吹き飛ぶとは言っていない)Strain Magnitudeでひずみを切断する力の大きさを設定できる(単位は不明)
破壊した破片を吹き飛ばすには後述するUse Radial Vectorなどで指定します。

Strain Falloff Type

MasterFieldの力がどの様に減衰するかを指定することができます。このあたり言葉ではよくわからないのでChatGPTにグラフにしてもらいました。また説明もわかりやすかったのでChatGPTの回答から引用しています。(信憑性はどうでしょうか?数学に詳しい人教えて下さい。)

1) None(なし)

  • 挙動(簡単):フィールド内で一様に Strain を与える。中心も端も同じ強さ。
  • イメージ:範囲内に入ったら“均一にぶっ壊す”スイッチ。
  • いつ使う?:テスト用や「範囲内を確実に壊したい」「減衰を考えたくない」場合。
  • 公式説明:No falloff function is applied. (Epic Games Developers)

2) Linear(線形)

  • 挙動(簡単):中心が最も強く、距離に応じて直線的に弱くなる。
  • 直感式(近似)strength ≈ 1 - d(d は中心からの正規化距離 0..1)→ 中心=1、端=0。
  • イメージ:爆風が中心で強く、外側に向かって滑らかに落ちる。
  • いつ使う?:自然で分かりやすい「中心→外側で徐々に弱まる」破壊(爆発など)。
  • 公式メモ:Linear は X に比例(結果として中心最大→端で最小)。(Epic Games Developers)

3) Inverse(逆比例)

  • 挙動(簡単)中心付近に極端に強く効き、少し離れただけで急速に弱くなる
  • 直感式(近似)strength ≈ 1 / (d + ε)(ε は 0 に近い小さな値で中心で発散するのを防ぐ)→ 中心のピークが非常に高い。
  • イメージ:ピンポイントの破壊(レーザー、貫通攻撃、狭い衝撃)向け。
  • 注意点:数学的には中心で無限大になり得るため、エンジン側で正規化/クランプが入ります(実運用では安全に扱えるよう調整されている)。(Epic Games Developers)

4) Squared(2乗:二次)

  • 挙動(簡単):距離に対して 二次関数的に変化する(線形より急峻/滑らかな曲線を作る用途)。
  • 直感式(近似)strength ≈ 1 - d^2(d は 0..1) → 中心を強く保ちつつ、外側でより急速に落ちる傾向。
  • イメージ:Linear より中心寄りの“頑丈さ”を残したいときに使う(中盤までほぼ強く、終盤で急に落ちる)。
  • いつ使う?:「中心はほぼ満タンで、外側は急に弱くしたい」場合。公式では「X*X に比例」と記載。(Epic Games Developers)

5) Logarithmic(対数)

  • 挙動(簡単)中心→外側の減衰が緩やかに、ある範囲でゆっくり変化する。中盤以降の変化が滑らか(または逆に中心から急に落とすなど、定義や正規化次第で表現は変わる)。
  • 直感式(近似)strength ≈ log(1 + k*(1 - d)) のような形で扱うイメージ(k はカーブの調整係数)。
  • イメージ:極端なピークを避けつつ、緩やかに弱めたい/特殊な“ドーム状”の効果を作りたいとき。
  • 公式説明:Log(X) に比例すると明記。内部の正規化によって実挙動は調整される。(Epic Games Developers)

実践での使い分け(よくある例)

  • 大爆発でじわっと全体を割りたいLinear(Min=0, Max=1 の基本設定)
  • レーザーや一点集中の破壊Inverse(小さい半径+高い Strain Magnitude)
  • 中心は強く外側は急に弱めたい(ドラマ重視)Squared
  • 自然で微妙な“弱め方”を作りたい(やや個性的)Logarithmic
  • とにかく全部壊したい・テストNone

 

 



 

パラメータ説明(吹き飛ばす)

Use Radial Vector

破砕した破片に放射状に速度を加えるかどうかを指定します。

Radial Magnitude

放射状に加える速度の大きさを指定します。単位については明確に断言はできませんが、秒速cm/sであるようです。細かい部分はChatGPTが解説してくれたので気になる人は読んでみてください。

結論から言うと、Chaos の Radial Magnitude は「加速度や力そのもの」ではなく、単位系に依存しない 無次元スケール値 として扱われています。つまり「N(ニュートン)」や「m/s²」といった物理的な SI 単位は付いていません。


🔹 どういう扱いになっているか

  • Chaos の Field System(Radial Vector + Radial Magnitude)は、対象の破片にベクトルを付与するスカラー係数を出力します。
  • これはエンジン内部の「フィールド演算結果(Field Vector / Scalar Field)」として渡され、Rigid Body Solver 側で「速度ベクトル」や「力ベクトル」に変換されます。
  • したがって Radial Magnitude = “そのフィールドが生成する強さの係数” です。
  • 単位は明記されていませんが、実際には 「cm 単位系に依存した速度寄与」 として解釈されることが多いです。

🔹 実測イメージ(開発者向け)

  • UE はデフォルトで 1 Unreal Unit = 1 cm
  • 例えば Radial Magnitude = 1000 と設定すると:
    • 半径の中心から外側に向けて 秒速1000 cm/s(= 10 m/s)程度の初速 が破片に加わる挙動になります。
  • つまり「数値を2倍にすれば、おおよそ初速も2倍」になります。

🔹 まとめ

  • Radial Magnitude の単位は明確には定義されていない(無次元のスケール値)
  • ただし、内部的には「速度ベクトル寄与」として解釈されるので、実質的には cm/s(センチメートル毎秒)程度の感覚で調整可能
  • 実際の挙動は「Geometry Collection の質量・剛性・Solver のサブステップ設定」にも影響されるので、最終的には 数値を実験してチューニングするのが正解です

 

Radial Position Offset

力を加える中心点をずらすことで力の向きを変えることができます。

Use Directional Vector

力をずらすのではなく、吹き飛ばす力そのものに方向性をもたせます。
回転の方向を変えたいときはFS_MasterFieldそのもののトランスフォームの回転を変更すればOKです。

Override Directional Vector

やっていることはUse Directional Vectorと同じですが、例えば同じブループリントFS_MasterFieldを複数配置したとして、特定の1箇所だけは力の方向を変えたいなど、規定の力の向きを上書きするときに使用します。

 



 

パラメータ説明(破片に回転を加える)

Use Torque

Torque Multでは破壊した破片に回転する力を加えることができます。デフォルトでは8が入力されていますがこれは単位があるものではなく回転させる力への倍率です。

Torque Mult は、その「回転させる力」に対する 倍率(スケールファクタ) です。
単位ではなく、無次元(dimensionless)のスケール値。


擬似的な単位を考えるなら

もし擬似的に単位をあてはめるなら、Chaos が扱うのは Impulseベースの力学なので:

  • Impulse (N·s) × 位置ベクトル (m) → Angular Impulse (N·m·s) に対応
  • そこに Torque Mult が掛け算される

したがって「N·m·s に対する倍率」と考えるのが最も近いです。

 

パラメータ説明(ノイズ=速度と外力にランダム性を加える)

Use Noise

ノイズを使用するかどうかを設定します。

Noise Min Max

ノイズの最大と最小の範囲を指定します。最小と最大の差が大きいほどランダム性が高くなり、個々の破片に加わる外力にばらつきが生じます。

Noise Scale Mult

トルクのときと同じ様に、ノイズの大きさに対する倍率を指定できます。数値が大きいほどノイズ自体の大きさが大きくなります。

 



 

パラメータ説明(継続的に力を加える=徐々に破壊)

パラメータを調整することで、岸壁が徐々に崩れる様子などが実装できます。

Use Decay

ダメージやストレスが時間とともに蓄積していくかどうかを設定します。

Decay Amount

時間ごとにどれくらいのダメージを与えるのかを設定します。このダメージの蓄積がDamage Thresholdの値を超えたときに破壊が生じます。

Decay Falloff Min Max

Decayが効く範囲を設定します。

Decay Delay

Decay が始まるまでの遅延時間、単位は秒です。崩れ始めるまでの時間を決めるイメージでしょうか?(本人も良く分かってない。)

Max Decay Amount

Decay が蓄積できる最大量(崩壊の上限値)でこの値に達すると必ず壊れる。デフォルトでは「 999,999,999,999 」になっています。

応用例(調整でできること)

  1. 地震で建物が時間差で崩れる
    • Use Decay = ON
    • Decay Amount = 小さめ
    • Decay Falloff = Linear
    • Decay Delay = 0
      → 最初は揺れるだけ → 数秒後に徐々に崩壊 → 最終的に全壊。
  2. 爆弾の遅延爆発(時限式)
    • Use Decay = ON
    • Decay Amount = 大きめ
    • Decay Delay = 3秒
    • Max Decay Amount = 中程度
      → 爆発の衝撃はすぐに出ず、数秒後に一気に崩れる。
  3. 雨風や時間で劣化する岩や建物
    • Use Decay = ON
    • Decay Amount = とても小さい
    • Decay Falloff Max = 広範囲
    • Max Decay Amount = 高め
      → すぐには壊れないが、繰り返し当たるうちにヒビが広がって数分後に壊れる。
  4. 演出用の「後から倒れる壁」
    • Use Decay = ON
    • Decay Delay = 5秒
    • Decay Amount = 中程度
      → プレイヤーが通り過ぎた直後に、遅れてドサッと倒れる。

 

 

 

 

コメント

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