執筆バージョン: Unreal Engine 5.3
|
ChaosFleshでソフトボディをシミュレーションする方法を紹介します。
ChaosFleshを使用すると次の動画のような柔らかい物体を作ることができます。
少し説明が長くなりますので、記事を分割して解説していきます。
使い方
- 四面体を作成してシミュレーションさせる ← 今回はココ!
- レベル上に配置したメッシュとコリジョンを判定
- SkeletalMeshにバインディング
1.四面体を作成してシミュレーションさせる
今回の記事では球状の四面体を作成してソフトボディのシミュレーションを行います。
Chaos Fleshプラグインを有効化します。![](https://historia.co.jp/wp/wp-content/uploads/2024/02/f75e30cd-50e0-4a2f-9f7c-797554115e9c-1024x363.png)
ソフトボディを作成するために必要な次の2つのアセットを作成します。
- Flesh Asset:ソフトボディの形状を設定する。ソフトボディの本体。
- Dataflow Graph:ソフトボディの振る舞い方を設定する。Flesh Asset内で編集できるため単体で編集することはあまりなさそう。
それぞれを作成していきます。
コンテンツブラウザの右クリックメニューからPhysics→Flesh Assetを選択します。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/246389c3-06d1-4bf1-a043-357a531e3dc4-1024x891.png)
Flesh Assetを選択
同じくコンテンツブラウザの右クリックメニューからPhysics→Dataflow Graphを選択します。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/d944f983-6e36-48c6-adbd-8cdb98ebf339-1024x822.png)
Dataflow Graphを選択
作成したFlesh Assetをダブルクリックで開いて、Dataflow Assetに先ほど作成したDataflow Graphを割り当てます。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/19103dd719744f7cadc7c082f428522b.png)
Dataflow Graphを設定する場所
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/96db4c98-0cc8-403e-b9ea-9cce4fa0ce8d-1024x473.png)
Dataflow Graphを割り当て
割り当てた後に一度Flesh Assetを閉じてからもう一度開き直すとGraphの画面が追加されます。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/c79ba6dd-7636-4cac-8ff5-d6b23e55db8d-1024x540.png)
Flesh Assetを開き直した様子
デフォルトの状態だとViewportとDetailsのウィンドウが表示されていなかったため、Windowからウィンドウを表示します。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/fd8736d5-bcd0-4de3-a81f-7c0870bcb2fc-1024x556.png)
Dataflow ViewportとNode Detailsを表示した様子
ここからソフトボディの振る舞いを定義していきます。
この画面にノードを追加すると、Flesh Assetに設定されているDataflow Graphにも自動でノードが追加されます。
まずはソフトボディの形状を決めます。これらの形状はすべて四面体メッシュです。
形状はあらかじめ用意されているもの(リングの形状)の他にStaticMesh、SkeletalMeshから作成することができます。
球状の四面体を作成するためにStaticMeshノードを追加します。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/f0468bd7-af7b-4d3b-bb62-21ea0e903854-1024x499.png)
StaticMeshノードを追加した様子
Node DetailsからStaticMeshアセットを選択します。(Node Detailsがない場合は、左上のメニューのWindowから表示することができます)
今回はSphereを選択しました。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/2a642a79-eff1-415f-99a4-1776a05fd08b-1024x521.png)
GenerateTetrahedralCollectionを追加します。
このノードで四面体を作成することができます。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/0b89c9b8-405a-4431-9135-b1e42f0b38d2-1024x518.png)
右上のトグルスイッチを有効化するとViewportにプレビューされます。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/c415050c-9099-4738-919b-e77b4bd18e59-1024x527.png)
GenerateTetrahedralCollectionのトグルスイッチを有効化
GenerateTetrahedralCollectionを選択した状態でNode DetailsからNumCellsを5に設定します。
NumCellsは四面体の分割数で数が多いほど詳細な形状を表現できますが、その分重くなります。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/6328aae2-1477-4c30-b2d0-6d4a8cb47fad-1024x540.png)
NumCellsを5に設定
SetFleshDefaultPropertiesを追加します。
このノードでソフトボディがどの用に振る舞うか設定します。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/d9a2e4bc-b17d-4cf5-9f37-0d545fc47b5f-1024x503.png)
Set Flesh Default Propertiesノード
- Density:密度、数値を上げるほど重厚感が増す。
- Vertex Stiffness:硬さ、数値が低いとスライムの用にドロドロ、高いとプルプルと弾力が増す。
- Vertex Damping:どれだけ減衰するか、空気抵抗や摩擦、数値を上げるほどすぐに動きが減衰するようになる。
- Vertex Incompressibility:圧縮のされにくさ、数値が大きいほど圧縮されにくい(パンパンに膨らむ)
- Vertex Inflation:膨らみ具合、0.5が基準で0に近づくほど内側に、1に近づくほど外側に膨らむ
ひとまずデフォルトの値のままにしておきます。
FleshAssetTerminalを追加します。
ここに繋いだCollectionが最終的にシミュレーションされます。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/7d7d1a89-af5d-49b4-89f1-61ca387487e0-1024x507.png)
FleshAssetTerminalを追加した様子
次は作成したFleshAssetを実際にシミュレーションさせます。
必要なものは次の2つです。
- FleshActor:シミュレーションする四面体のアセット、シミュレーションさせたいFleshAssetの数だけ必要
- DeformableSolverActor:シミュレーションの設定(精度やコリジョン、重力など)、基本的には1つあれば大丈夫
FleshActorはFleshAssetをレベル上にドラッグすると自動で作成されます。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/122ab56d-a4d6-425f-9189-abf16c107cf7-1024x500.png)
FleshAssetをレベル上にドラッグして配置した様子
DeformableSolverActorは左上のメニューから検索すると出てきます。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/b826cf72-45dc-42c6-a71c-5df46edd0de6-1024x525.png)
DeformableSolverActorを配置
このFleshActorがどのSolverでシミュレーションされるか設定します。
Fleshを選択して詳細パネルから先ほど配置したSolverを選択します。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/27ce4494a5ebbcd74aeee4c987a514b9-1024x541.png)
プレイするとSphereが動きます。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/62738dca-1b21-44fd-9519-77bff8acf36f-1024x540.png)
Play ModeをSimulateで実行した様子
柔らかすぎたのでVertexStiffnessを10倍に設定してみます。
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/7b10d3a5-e79c-49d8-ab1d-fc113053141b-1024x541.png)
![](https://historia.co.jp/wp/wp-content/uploads/2024/02/fff6517a-6751-4a18-ac47-99ec4464e3d7-1024x523.png)
少し硬くなりました。
今回はここまでになります。
次回はメッシュとコリジョン判定について解説していきます。お楽しみに!
参考サイト
https://dev.epicgames.com/community/learning/tutorials/BEby/unreal-engine-chaos-flesh
https://dev.epicgames.com/community/learning/tutorials/BEZV/unreal-engine-electric-dreams-tire-deformation
https://docs.unrealengine.com/5.3/ja/chaos-flesh-overview/