機械学習クロス シミュレーション システムの概要
機械学習 (ML) 布シミュレーション システムは、パフォーマンスに優れた高忠実度のリアルタイム布シミュレーションを Unreal Engine で提供します。
このシステムでは、リアルタイムで使用可能なトレーニング済みのデータセットを使用することで、従来の物理ベース モデルよりも高い忠実度を実現し、以前はオフライン シミュレーションのみで達成可能であった品質の結果を生成することができます。
機械学習を使用する利点
従来のゲーム開発環境では、物理ソルバを使ってキャラクターのクロス (衣服) をシミュレートします。 しかし、弾性の更新に時間がかかることや、クロスとボディの複雑なインタラクションが原因で、このプロセスの演算処理は高負荷になる可能性があります。
機械学習システムを利用することで、事前に生成した高品質のシミュレーション データを使用して、ユーザーによるモデルのトレーニングを支援することができます。 このシステムでは、メモリ使用の面で効率よく、迅速に処理を行いつつ、事前にシミュレートされたデータと同じような品質のクロス メッシュを生成することができます。
技術的な実装
ML クロス シミュレーション システムでは、フレームごとにキャラクターのスケルタル ポーズを入力として受け取り、線形ブレンド スキニングを使ってベース クロス メッシュを変形することで、最終的なクロス ポーズを予測します。 変形には 2 つの主要なコンポーネントがあります。
最初のコンポーネントは、ニューラル モーフ モデルに似た低周波変形です。
このコンポーネントは、スケルタルメッシュ ポーズを入力として使用して一連の係数を予測する多層パーセプトロン (MLP) ネットワークによってモデル化されます。 低周波デルタは、次のように計算されます。
low_frequency_deltas = mean_delta + coeffs * basis基底はトレーニング時に学習することも、主成分分析 (PCA) を使用して事前に計算することもできます。
このコンポーネントをトレーニングするには、ランダムなポーズのデータセットを準備して、それぞれのポーズに設定するクロスをシミュレートする必要があります。 このコンポーネントでは、ヒューマノイド キャラクター用に 5000 個のポーズが推奨されます。
2 つ目のコンポーネントは、最近傍法 検索を使用して計算される高周波変形です。
このコンポーネントは、最初のコンポーネントから係数を受け取り、最近傍法データセットで最近傍法検索を適用します。つまり、
high_frequency_deltas = NearestNeighborSearch(coeffs)このコンポーネントでは、小規模ながらも一連の多様なポーズを準備して、それぞれのポーズに設定するクロスをシミュレートする必要があります。 これらのポーズは、ゲーム内アニメーションのキーフレームから選ぶことが理想的です。 最適な結果を得るには、ヒューマノイド キャラクター用に 50 ~ 100 個のポーズが推奨されます。
この技法では頂点のデルタが次の式で算出されます。
vertex_delta = low_frequency_deltas + high_frequency_deltasトレーニング済みのデータセットについては、Unreal Engine の ML デフォーマエディタ の Chaos Cloth ジェネレータ ツールを使用して、それぞれのポーズの最終的な布の位置を生成できます。 これにより、クロスがシミュレートされ、リアルタイムで使用できるジオメトリ キャッシュが生成されます。
または、外部のクロス シミュレーション ソルバ (Houdini Vellum など) を使用することもできます。 それぞれのポーズについては、最も適した位置が見つかるまでクロスをシミュレートして、確定したクロスをジオメトリ キャッシュに保存します。 このキャッシュは、Alembic ファイルとして Unreal Engine にインポートすることができます。
Unreal Engine 内でジオメトリ キャッシュを生成する方法については、ML 布生成チュートリアルを参照してください。
最適な結果を得るには、データセットに最も関連性の高いポーズを手動で選択してください。 ただし、KMeans Pose Generator を使用して、ポーズを自動的に選択することも可能です。 このジェネレータでは、アニメーション シーケンスを受け取って KMeans アルゴリズムを実行し、最近接データセット用の一連のエントリを生成します。
現在の制限事項
現在のシステムの実装には、大きな制限事項として「布は準静的である」と想定されていることがあります。 これは、このシステムではしわやひだといった形状の詳細は予測できますが、スイングやドレーピングといった動的な動きは予測できないことを意味します。
現時点で、このシステムはパンツや T シャツといったタイトフィットの衣服には最適ですが、ドレスやケープなどのルーズな衣服には向いていません。
ML 布システムの使用方法については、Epic Developer Community の「ML デフォーマー - 最近傍法モデル」のチュートリアルを参照してください。