このガイドでは、指定されたスターフィッシュのアセットを使用して、Chaos Flesh シミュレーションを設定する方法について説明します。

ファイルの設定
サンプル ファイルのリファレンス
以下に、サンプル ファイルのダウンロード場所やプロジェクト内に配置する場所についての詳細を示します。
ランチャーから空のプロジェクトを作成する
提供されたファイルを使用するには、ランチャーから UE プロジェクトを作成する必要があります。


エディタのバージョン
使用するバージョンが 5.5.0-37670630+++UE5+Release-5.5 以降であることを確認してください。

ファイルのダウンロード
Fleshtutorials-ExampleContent.7z をダウンロード します。
ファイルには「.fbx
」フォルダも含まれています。このフォルダは、このガイドの「リグ バウンド レイキャスト」セクションで使用します。
「Example Content」フォルダ
「Fleshtutorials-ExampleContent.7z
」フォルダを解凍します。次に、解凍した「ExampleContent」フォルダを、手動で「Content」ディレクトリに移動させます。
すでに「Cloth」サンプルを使用した後などで「ExampleContent」フォルダが存在している場合は、zip ファイルの「5_5_ChaosFlesh」フォルダを「ExampleContent」フォルダ内にドラッグしてください。

プラグインを読み込む
まず最初に、Chaos Flesh プラグインを有効にする必要があります。

次に、ML Deformer Framework プラグインと ML Deformer Neural Morph Model プラグインを読み込みます。

スターフィッシュの準備
クイックセットアップ
筋肉システムは、四面体サポート構造体を使用して、ボリュメトリック弾性シミュレーションを実装します。四面体はソルバによって評価され、ボリュームを維持し、キャラクターのサーフェスがキャラクター自身の重さによって崩壊することを防ごうとするサポート力を提供します。次の例では、クローズド スタティックメッシュ (シンプルなキューブ) から四面体ジオメトリを作成し、Unreal Engine 内でアセットをシミュレートする方法について説明します。
スターフィッシュをインポートする
筋肉シミュレーションには、サーフェス ジオメトリから作成した四面体メッシュが必要です。次の例では、FBX ファイルからジオメトリをインポートし、データフロー ノードを使用してスターフィッシュの四面体メッシュを作成する方法について説明します。
コンストレイント
筋肉アセットと単純なキネマティックをインポートする
キネマティック コンストレイントを使用すると、アニメーションを通じて頂点を制約することができます。キネマティックは、四面体の頂点上に定義されます。頂点がキネマティックとして定義されると、その頂点の質量プロパティは、無限の質量に設定され、シミュレートされなくなります。キネマティック頂点はダイナミクスの境界条件として使用することができ、それらに接続されている自由な頂点は、キネマティックの動作によって制御されます。次の例では、パーティクルをペイントしてキネマティックに制約し、空間内でパーティクルをコンポーネントの位置に対して相対的に固定する方法について説明します。
頂点属性の転送
四面体メッシュは変更による影響を受けやすく、トポロジが変更されると、四面体メッシュに行われたペイントが無効になります。次の例では、スケルタルメッシュをペイントして、頂点属性 (ペイントされた属性とカラー) を四面体メッシュに転送する方法について説明します。
スケルトンのキネマティック コンストレイント
スケルトンの変換は、キネマティックの定義にも使用できます。典型的なユースケースには、スケルトンへの筋肉コンポーネントのアタッチがあります。筋肉コンポーネントがスケルトンのローカル空間内にある場合、スケルトンと交差する四面体の頂点 (親子線分) はキネマティックに制約されます。次の例では、スターフィッシュ アセット上のキネマティック頂点を、同じ場所にあるスケルトンに基づいて自動的に定義する方法について説明します。
アニメートされた場合のキネマティック コンストレイント
キネマティック頂点がアニメートされたスケルトンに制約される場合、四面体ジオメトリは、スケルトンの動きに従います。次の例では、アニメートされた変換階層から筋肉メッシュを制御するための設定について説明します。
弱いコンストレイント
位置ターゲット (「弱いコンストレイント」とも呼ばれます) は、ジオメトリをターゲットの位置に制約できるもう 1 つの方法です。弱いコンストレイントとキネマティック コンストレイントの違いは、弱いコンストレイントには、実際のターゲットからのわずかなずれを許容する剛性があることです。過度な制約がある環境に弱いコンストレイントを導入することで、シミュレーションをスムーズで視覚的に許容できる、適切な状態にできます。次の例では、弱いコンストレイントを使用して、筋肉アセットをキネマティック ジョイント ターゲットにバインドする方法について説明します。
コリジョン
ワールド コリジョン
四面体ソルバは、プライマリ ワールド ソルバとは別に実行されます。Chaos Cloth ソルバと同様に、四面体ジオメトリに対するコリジョンは、シミュレーション中に追加する必要があります。次のデモでは、筋肉ソルバにアタッチされているコリジョン マネージャーを使用して、シミュレーションの冒頭にコリジョン ボディを追加する方法について説明します。
コリジョンをストリーミングする
ワールド ジオメトリに対するコリジョンは現在、ストリーミング システムを介して実装されます。四面体ソルバは、四面体シミュレーションとの距離に基づいてロードおよびリリースされる、限定されたコリジョン タイプのセットに対応することができます。四面体ソルバに対するコリジョンは、剛体ボリュームに対する頂点ベースのコリジョンとして実装されるため、四面体の解像度が高くなると、コリジョンの応答にかかる計算コストも増加します。
現在、ソルバは凸型といくつかの解析タイプ (球体、立方体、平面) をサポートしており、コリジョンは剛体から四面体への一方向のみです。これは、四面体は剛体の状態に影響を与えず、剛体は実質的にキネマティックな、無限の質量を持つ相互作用であることを意味しています。通常、剛体の位置と速度はプライマリ剛体ソルバで計算され、筋肉は剛体の動きに反応するだけです。
ブループリント アセットとメッシュ デフォーマー
筋肉アセットは、埋め込まれたスケルタルメッシュを変形することができます。筋肉アセット データフロー グラフの「GenerateSurfaceBindings」ノードを使用して、スケルタルメッシュのレンダリング サーフェスと四面体メッシュ間で対応するデータを構築します。次に、スケルタルメッシュの「DG_FleshDeformer」を使用して、四面体メッシュの変形をスケルタルメッシュに適用します。
デフォーマーが機能していないように思える場合は、ログで詳細を確認してください。アクタに複数の筋肉コンポーネントがある場合は潜在的な問題が発生するため、どのスケルタルメッシュをどの筋肉アセットで変形させるかをデフォーマーに指定する必要があります。曖昧さは、GenerateSurfaceBindings ノードでオプションの TransformSelection または GeometryGroupGuids を設定すると解消できます。他にも、筋肉アセット (残りのコレクション) が、GenerateSurfaceBindings を使用して適切なスケルタルメッシュにバインディングされているかを確認します。また、レンダリング サーフェスや四面体メッシュのトポロジが変更された場合は、バインディングを再生成する必要があります。バインディングのないレンダリング ポイントはスキン処理されます。デフォーマーでポイントが残された場合、ポイントにはバインディングがないか、マスキングされています (現時点では、バインディングがない場合にのみマスキングされますが、将来的にはマスキング用のデータフロー ノードが登場する予定です)。
パーティクルごとの属性
四面体ソルバによって使用されるシミュレーション プロパティの多くは、パーティクルごとのものです。たとえば、質量はメッシュ全体で変えることができ、シミュレートされた四面体の頂点に保存されます。これにより、均一性が変化する四面体メッシュが、メッシュのボリューム全体で質量を均一に分散できるようになります。質量はパーティクルごとのプロパティの一例です。この例では、アセットのセットアップ中にパーティクルに格納されているすべてのプロパティを構成する方法を示しています。次のデモでは、フィールドを使用して、四面体上のパーティクルごとのプロパティを設定する方法について説明します。
ブループリントでのスポーンと破壊
ブループリントの操作中も、筋肉アセットをスポーンさせることができます。ブループリント アクタはスケルタルメッシュ アクタと同様に機能し、筋肉コンポーネントを作成して、それを筋肉アセットに関連付けます。次に、Spawn Actor および Destroy Actor ブループリント ノードを使用して、シミュレーションにブループリント アクタを動的に追加したり、削除したりすることができます。
サンプル シミュレーションの結果
筋肉コンポーネントのレンダリング表示には、四面体シミュレーション全体の結果が表示されますが、シミュレーションから変形のサブセットのみをサンプリングすると役立つ場合があります。たとえば、「Electric Dreams」デモでの Nanite メッシュへのワールド位置オフセット (WPO) のレンダリングは、タイヤのサーフェス近くの位置をサンプリングし、それを GPU 上でタイヤ ジオメトリを変位させるテクスチャにマッピングすることで実装されています。次のデモでは、ゲームプレイ中にアクセスできる変形結果のサンプル セットを補間する方法について説明します。
キャッシュ
データフローのキャッシュと ML デフォーマー
筋肉シミュレーションはコストがかかる場合があります。低解像度のアセットをゲーム内で実行させることはできますが、高解像度のジオメトリで結果を達成するには、四面体シミュレーションをリアルタイムで実行することができません。キャッシュ システムを使用すると、シミュレーション結果を記録して、データフロー グラフで再生することができます。キャッシュから、ML デフォーマーのトレーニング データとしてジオメトリ キャッシュを生成することもできます。次の例では、シミュレーション結果をキャッシングして、ジオメトリ キャッシュを生成し、ML デフォーマーをトレーニングする方法について説明します。
エディタ内のキャッシュ
エディタ内でキャッシュして、レベル シーケンスで再生することもできます。次の例では、シミュレートした筋肉アセット (またはブループリント) をキャッシュして、シミュレーション結果を詳細に検査する方法について説明します。
シミュレーションのプロパティ
シミュレーションのプロパティは、Chaos Flesh システム全体でいくつかの場所に設定されます。四面体ソルバには、シミュレーション システム全体に影響を与えるプロパティがあり、たとえば、ユーザーは時間ステップやスレッドのプロパティ、コリジョン制御を構成することができます。筋肉アクタのプロパティを使用すると、アセットのインスタンスに個別に特定の構成を設定できますが、データフローベースのプロパティはアセット自体を構成します。次のデモでは、シミュレーションでより重要となるプロパティをいくつか紹介し、特定の制御タイプが想定される場所に関する概要を説明します。
リグ バウンド レイキャスト
ガイドのこのセクションを進めるには、「ファイルのダウンロード」で提供される .fbx
ファイルを参照してください。
リグ バウンド レイキャストを使用すると、特定タイプのオブジェクトで環境内の静的なジオメトリとインタラクトできるようになります。レイキャストのアプローチは一般的な環境コリジョン設定ではありませんが、特定の設定において、変形可能なボディがシーンのジオメトリに応答できるようになります。たとえば、この設定は 「Electric Dreams」のデモ で、タイヤをシーン ジオメトリに反応させるために使用されています。
このアプローチを使用できるようにするためには、いくつかの必要な要件があります。レイキャスト頂点はモデル内の変形位置を中心に凸型にする必要があります。四面体コンポーネントはスケルタルメッシュ ブループリントに含まれる必要があり、アセットはスケルトンにキネマティックに制約される必要があります。コリジョン応答の実装方法により、レイキャストの原点はモデルの内部ポイントから発生する必要があり、コリジョン応答はレイキャストの方向に逆らい、内部の原点に向かって頂点が移動します。
上級向けワークフロー
Chaos Flesh を使用して筋肉や脂肪を設定する方法についての詳細は、「筋肉シミュレーションのための Chaos Flesh」を参照してください。