UE4 新しい物理破壊システムChaos Destructionを使ってみよう
概要
Chaos自体はUE4.23以降でもエンジンビルドをすることで利用は可能です。
エンジンビルドとはいってもTarget.csを少しいじる程度ですので、複雑なことはありません。
詳細は以下のdocをご覧ください。
Chaos Destruction Overview | Unreal Engine Documentation
さて、そんなChaosですがUE4.26からは本格的に利用できるようになりそうです。
Unreal Engine 4.26 Preview 1 がリリースされました - Unreal Engine
UE4.26.0 Preview 1の概要は以下から。
Unreal Engine 4.26 Preview - Unreal Engine Forums
Chaos関連だけでもいくつかの記述がありますね。
・Chaos Ragdoll/Physical Animation (Beta).
・Chaos RBAN(Chaos Rigid Body Animation Nodes).
・Chaos Cloth.
・Chaos Vehicle (Experimental).
従来のPhysXからChaosがエンジンのデフォルト機能となることや
機能の更新されたRagdollやClothシュミレーションに加えて、新しく追加されたChaos Vehicleなど。
ワークフローに大きな変更を与えずに使用できるというのも大変嬉しい限りですね。
それでは早速Chaosを使ってみましょう。
Chaosで破壊可能なオブジェクトを用意する
まずはChaos関連のPluginが有効になっていることを確認します。
このうち、Chaos CachingとChaosVehicleはデフォルトでは無効ですが今回は使用しないためそのままで問題ないです。
まずは破壊するためのStatic MeshをLevel上に配置します。
今回は「Starter Content」に含まれている「SM_Chiar」を使用します。
次に「Modes」を「Fracture」に切り替えます。
Shift + 6でも可能です。
Fracture Modeが有効になった状態でLevel上の「SM_Chair」を選択して
Fractureの「New」を押下します。
するとGeometry Collectionの保存ダイアログが開きますので適当な場所に保存します。
名前は「GC_Chair」としました。
ここまでの作業を行うとLevel上のStaticMeshがGeometryCollectionActorに置換されます。
また、今回は単一のStaticMeshからGeometryCollectionを作成しましたが
Level上の複数のStaticMeshを選択してから作成することで
複数のStaticMeshが登録された1つのGeometryCollectionを作成することも可能です。
続いてVoronoi Fractureの作成を行います。
いくつか種類がありますが、今回は「Uniform Voronoi Fracture」を使用します。
Uniformを選択した状態だと「Fracture」Mode Panelの表示が以下のようになりますので
Level上の「GC_Chair」を選択した状態で「Fracture」を押下することで適用が可能です。
また「Uniform Voronoi」のmin/maxの値で分割数を変更することが出来ます。
するとFractureのOutlinerのGC_Chair.Geometry.../SM_Chairだったところに
SM_Chair_0, 1...19が追加されます。
分割度合いの確認のために「GC_Chiar」を選択した状態で
「Explode」の値をスライドして確認してみましょう。
また、「Colors」を有効化している場合は以下のような見た目になります。
実際にPlayしてみると破壊されることが確認できました。
また、GeometryCollectionのMaterialかLevel上のGeometryCollectionActorのMarerialで
断面部分のMaterialを変更することが可能です。
以上で作成完了です!
追記 Implicit Typeについて (2020/09/07)
Geometry Collection内のImplicit Typeについて
「GC_Chair」を開くとChaos Physicsについての設定項目がいくつかあります。
その中でもコリジョン構造を初期化するための種類として「Implicit Type」があります。
大きく分けて2種類あり、Analytic Collision VolumesとLevel Set Volumesの2種類に分けることができます。
Analytic Collision VolumesはBox, Sphere, Capsuleの3種類あり
BoxはBounding Boxと同様の方法で剛体をラップされており
Sphere, Capsuleは剛体に収まるように配置されるようです。
※CapsuleはUE4.26.0 Preview 1段階でも非サポートでエディターがクラッシュします。
Boxの挙動
Sphereの挙動
最後にLevel Set VolumeですがこちらはAnalytic Collision Volumesより正確で
Min/Max Level Set Volumeからパフォーマンス調整が可能なようです。
また、Level Setを使用する場合は「Collision Type」を「Particle-Implicit」に設定する必要があります
以下Level Set Volumeの説明をドキュメントより引用
Voxel化されたGridを使用して剛体をサンプリングし、Geometryの符号付きDistance Fieldを生成します。
Level Setの挙動