ヘアのリアルなシミュレーション
Unreal Engine のヘア レンダリングおよびシミュレーション システムでは、ストランド (髪の束) ベースのワークフローを使用して、それぞれのヘア ストランドを物理的に正確な動きで個別にレンダリングします。これにより、DCC パッケージで作成されたグルームに対して、数十万 (もしくはそれ以上) ものフォトリアルな髪をリアルタイムでシミュレートし、レンダリングすることができます。 実際のヘアやファーは、頭や体の動き、風、重力や他の力に応じて独特の動きを見せます。リアルなヘアやファーの動きを表すアニメーションは、通常は物理ベースのシミュレーションを通じて再現可能ですが、このような複雑なシミュレーションをランタイム時に実行すると、計算コストが非常に高くなります。
ヘアは、その本数の多さと動きの複雑さ、さらにはオブジェクト コリジョンとセルフコリジョンの両方と相まって、シミュレートすることが非常に難しいオブジェクトです。
ヘアのダイナミクスは複雑な相互依存の上に成り立っています。動物のファーの場合は、皮膚 (筋肉と脂肪) のシミュレーションがファー モーションとヘアのシミュレーション自体の大部分を占めています。
リアルなヘアをレンダリングし、シミュレーションするとき、システムは特別な「ガイド」を使用して、シミュレーションの計算コストを削減します。ガイドは変形に使用されるストランド全体のサブセットです。シミュレーション中に、ガイド ストランドは変形し、この変形がすべてのストランドの動きを補間するために使用されます。
Unreal Engine では 2 種類のガイド - レンダリング ガイド と シミュレーション ガイド を使用します。レンダリング ガイドは一般に、凝集、方向の変化、流れなどの構造をグルームに渡します。これらのガイドは全体のストランドの一部に相当します (一般に 5 ~ 10%)。最適なガイドを手動で選択すると、ストランドのランダム サンプルと比較して、変形の質が大幅に改善されます。
シミュレーション ガイドは物理シミュレーション中に、関連するストランドの形状と動きを促進します。これらのガイドは、レンダリング ガイドをリサンプルし、ストランドごとの頂点 (ポイント) 数を減らすことで作成されます。必要に応じて、ストランドごとのポイント数を 4、8、16、32 に設定できます。
ガイドは外部の DCC パッケージでも、Unreal Engine エディタ内部でも作成できます。ガイドを自動で生成するには、[Import Options (インポート オプション)] ウィンドウで適切なオプションを選択し、ガイドで使用するストランドの比率を選択します。
レンダリング ガイドを自動生成するとき、Unreal Engine では全ストランドからランダムでサンプルを選択します。ガイドを手動で作成すると、変形の質が大幅に改善されます。
Unreal Engine では、ヘア シミュレーションは Niagara ビジュアル エフェクト システムの一部として実装されています。シミュレーションは GPU で実行され、ソルバは XPBD (拘束動力学準拠の位置ベース シミュレーション) に基づくものです。
コンストレイントを解決する
さまざまなコンストレイントをすべて解決するには、ストランド、コリジョン、構成モデルのパラメータについて、サブステップの数とソルバのイテレーション回数を提供する必要があります。このソルバでは、最終的なスタイルを元のスタイルに可能な限り近づけるために、重力下 (レスト ポーズ) にある元のメッシュをターゲットとします。
コリジョンを処理する
物理アセットをスケルタル メッシュに追加すると、シミュレーション ソルバによって、その物理アセットのプリミティブに対するボディ コリジョンが処理されます。
セルフコリジョンの算出は、パーティクル速度の、標準ボクセル グリッドへのラスタライズによって作成された平均速度フィールドに基づきます。
このシステムで使用するのは、外部の力が加わったとき、髪の束のリアルな振る舞いを最もうまく近似する数学モデルです。最大の課題は、少ないソルバ イテレーション回数でストランドに現実味のある動きをさせる、優れたモデルを見つけることです。
このようなモデルでは、シミュレーション中にストランドの伸びや曲がり、ねじれなどを制御します。Cosserat Rod 方式および Angular Spring 方式は、グルーム アセットの物理プロパティで利用できます。
ヘア シミュレーションの詳細については、「ヘアのレンダリングとシミュレーション」 のドキュメント ページを参照してください。