こんにちは、コンテンツデザイン開発グループリアルタイムチームの菅木です。
これまでいくつかの災害啓発コンテンツをご紹介しておりますが、今回はUnreal Engine標準搭載の破壊シミュレーションである「Chaos Destruction」を活用したデモについて、ご紹介いたします。
ご紹介するのは、斜面崩壊をテーマとして、PLATEAUを基に作成した山の斜面で破壊シミュレーションを実施したものです。
Chaos Destructionを用いた斜面崩壊シーンのデモ動画
下の動画が、斜面崩壊のデモ動画です。
※地形モデルは某所のPLATEAUモデルを用いています。崩壊範囲はハザードマップの特区別警戒区域を基に設定しました。ただし、崩壊土砂量等に根拠はなく、あくまでビジュアライズとしてのシミュレーションとなります。
Chaos Destructionについて
先に紹介した動画では、斜面崩壊を表現するために、UE標準の破壊シミュレーションツールであるChaos Destructionを使用しています。
モデルの破砕からシミュレーションまで一連のセットアップが可能で、他のDCCツールを使用せずにUE内で破壊シミュレーションを実施することができます。また、NiagaraやAudio MixerなどほかのUEシステムとの連携することができ、柔軟な表現が可能です。
基本的な使い方については公式ドキュメントがありますので、下記をご参照ください。
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/chaos-destruction-in-unreal-engine
制作工程
ここから、デモ動画の制作工程をご紹介いたします。
① PLATEAU SDKによるモデルの取り込み
今回のデモでは、PLATEAU SDKから読み込める地形・建物データを使用しました。インポートしたモデルは一部修正が必要なため、FBX形式でエクスポートします。詳しい使い方は下記が参考になります。
https://project-plateau.github.io/PLATEAU-SDK-for-Unreal/index.html
② 破壊シミュレーション用地形モデルの作成
PLATEAU SDKでエクスポートした地形モデルは、下図のように閉じていない3Dモデルとなっています。破壊シミュレーションを実施するためには、閉じた3Dモデルである必要があります。

DCCツール(Blender等)を用いてモデルを編集します。破壊シミュレーションを実施したい部分(図のオレンジの部分)だけポリゴンを分離して、押し出し編集で閉じた3Dモデルを作成します。

これで破壊するモデルの下ごしらえは完了です。こちらをFBX形式でエクスポートします。
破壊するモデル以外の3Dモデルについても、UEで読み込める形式(Datasmith、FBX等)でエクスポートします。

先ほど編集したモデルたちをUEに読み込み位置を合わせます。いい感じにはまりました。

③ Choaos Destructionを用いた破壊シミュレーション
ここからChaosDestructionを使用した破壊シミュレーションを実施していきます。
まずは、先ほど作成した閉じた3Dモデルをバラバラに粉砕します。
- (下図①)粉砕する3Dモデルを選択して、左上のモード選択ボタンからフラクチャモードを選択します。表示されるモードツールバー内の[Generate/新規]を押してジオメトリコレクションを新規作成します。
- 完了すると、先ほどの3Dモデルがジオメトリコレクションアクターに置き換わります。
(下図②)このジオメトリコレクションに対して、[モードツールバー/Fractuer]内の機能で粉砕処理をすることが可能です。様々な粉砕方法・パラメータ設定がありますので試しながら適当な設定を探します。 - (下図③)各種パラメータを設定して、「フラクチャ」ボタンを押すと粉砕が実行されます。
それぞれの機能と設定については、下記公式ユーザーガイドが参考になります。
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/fracturing-geometry-collections-user-guide
今回は、ある程度は全体が均一に粉砕されつつ、大きさに変化を付けたかったため、「一様化」で粉砕した後に、「クラスタ」で粉砕をしています。このように段階的に異なる粉砕方法を適用することも可能です。

粉砕後は、フラクチャの設定項目にある「破壊量」を調節することで、破片を分離して粉砕状況を確認することもできます。

いい感じの粉砕が出来たら、破片内面のマテリアルの設定をしていきます。
- (下図①)[モードツールバー/Utilities/マテリアル]の設定項目を選択します。
- (下図②)「Add Material Slot」でマテリアルスロットを追加します。追加されたスロットに、内部に適用したいマテリアルを選択します。
- (下図③)「マテリアルを割り当て」項目の設定から追加したマテリアルのインデックス番号を選択します。その下の対応するフェースがOnly Internal Faceになっていることも確認しておきます。
- (下図④)「マテリアルを割り当て」を実行します。
ジオメトリコレクションを選択したままshift+Bを押すことで、カラフルな表示から、元のマテリアル表示に切り替えられます。
無事、内部のマテリアルが適用できました。

ここまででやっと、シミュレーションで崩壊させるモデルが完成しました。
このままプレイを実行すると物理シミュレーションが開始できます!
が…現状では、下方に自由落下していくだけの結果が得られます。
実は、空中に置かれた破片たちは、どの破片も空間に固定されていないため、全体がそのまま落下してしまいます。
この破片の固定を設定するほか、力を加えたりして思い通りの破壊を実施するためには、破壊シミュレーションに関する各種設定をしていく必要があります。
というわけで、ここからは破壊シミュレーション周りの設定をしていきます。
まずは、破片の一部を空中に固定する設定を適用します。
コンテンツブラウザの設定(下図①)から「エンジンのコンテンツを表示にチェックを入れます。
表示されるエンジンフォルダが[エンジン/ コンテンツ/ EditorResources/ FieldNodes]にある、「FS_AnchorField_Generic」をドラッグ&ドロップします。詳細設定のトランスフォームから移動・変形させて、固定したい破片を覆うように設置します。今回は側面3か所と底面に計4つ設置しました。

次に、ジオメトリコレクションの[詳細設定/InitializationFields]から設置したフィールドの数だけエレメントを追加し、各フィールドを指定します。

これで、設置したFS_AnchorField_Generic領域内の破片が、空中に固定された状態になります。
次に崩壊のきっかけとなる力を設定していきます。
力を与える前に、破片の摩擦の設定をしておきます。
(下図①)ジオメトリコレクションの詳細設定から物理マテリアルを新規作成し適用します。Friction(摩擦)の設定を今回は0.0としました(下図②)。

次に、与える力の設定です。
FS_AnchorField_Genericと同じ場所にある、青色のFS_MasterFieldをドラッグ&ドロップします。FS_MasterFieldの詳細設定から作用範囲の調整と、力の与え方を設定します。
詳しい設定は、下記公式ユーザーガイドが参考になります。
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/chaos-fields-user-guide-in-unreal-engine
今回は、矩形領域に斜面下方向への力を3秒間だけ作用させる設定としました。

これでシミュレーションの設定は完了です。
実行してみると、問題なく斜面崩壊のシミュレーションができました。

本記事で詳細は記載しませんが、ChaosDestructionではNiagaraのエフェクトと連携させることができます。
最初にご紹介したデモ動画では、崩壊した破片の軌跡に土煙が発生するような表現を付け足しています。
ChaosDestructionを応用したデモ
下の動画は、破堤を表現したデモ動画です。UnrealEngineを用いて作成しており、今回ご紹介した、ChaosDestruction(破壊シミュレーション)とFluidFlux(流体シミュレーションアドオン)組み合わせて破堤を表現しました。
このように、UEの機能だけで柔軟な破壊表現ができるのはとても魅力的です。
まだまだ検証中ですので、今後も使えるシーンを模索していきたいと思います。
さいごに
大きな崩壊を伴う自然現象や災害は多くあります。一方で、それらのほとんどが日常生活で目にするスケールよりも大きく、実際見たことがないと、漠然としたイメージしかできていないものが多いと感じます。
ご紹介したデモは、PLATEAUのデータを用いて、実際にある土砂災害の特別警戒区域を参考にシーンを作成しています。
今回は崩れ方や崩壊土砂量などに根拠はないですが、今後、専門技術をもとに予測されたデータと組み合わせることができれば、より正確な情報を、人を選ばず理解してもらい自分事に感じてもらうことが可能になると考えています。
災害の発生によってどのような状況になるのか。どの程度の規模が想定されていて自分の身にどれくらい危険が及ぶ可能性があるのか。そういった、日常生活からイメージしづらい場面を疑似体験することができるCGの力に期待しています。
ChaosDestructionについては、斜面崩壊、土砂災害だけでなく、土石流や、建物の崩壊等にも活用できそうな機能だと感じています。
色々なCG表現を組み合わせて、多様なシーンが表現できるように取り組みを進めていきたいと思います。





