4.1K Views
November 27, 23
スライド概要
■概要
髪の毛の物理シミュレーション、アニメーションシステム実装手法、ツール周りの実装とタイトル最適化をご紹介いたします。
※CAPCOM Open Conference Professional RE:2023 で公開された動画を一部改変してスライド化しております。
■想定スキル
髪の毛の表現周りの知識を持っている、もしくは実装経験がある方
詳細は下記公式サイトをご確認ください。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
CAPCOM Open Conference Professional RE:2023
https://www.capcom-games.com/coc/2023/
カプコンR&Dの最新情報は公式Twitterをチェック!
https://twitter.com/capcom_randd
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
株式会社カプコンが誇るゲームエンジン「RE ENGINE」を開発している技術研究統括によるカプコン公式アカウントです。 これまでの技術カンファレンスなどで行った講演資料を公開しています。 【CAPCOM オープンカンファレンス プロフェッショナル RE:2023】 https://www.capcom-games.com/coc/2023/ 【CAPCOM オープンカンファレンス RE:2022】 https://www.capcom.co.jp/RE2022/ 【CAPCOM オープンカンファレンス RE:2019】 http://www.capcom.co.jp/RE2019/
Strands Physics / Tools ©CAPCOM 1
Agenda 1. ストランド・シミュレーションのフレームワーク 2. ツールとアニメーション・パイプライン 3. 今後の改善 本講演は、ストランドヘアのシミュレーションがBIOHAZARD RE:4でどのように機能するのかと今後の改善についてとなります。 また、ストランドツールやアニメーションパイプラインに関するいくつかの作業についても言及します。 ©CAPCOM 2 2
Simulation Workflow Ornatrix Alembic (*.abc) • バインディング ストランドをメッシュにバインド Binding Mesh (*.fbx) • シミュレーション ガイドストランドのみ Strand Asset Binding Asset • ガイド すべてのストランドに ガイドストランドを適用する Simulation ストランドヘアのシミュレーションのワークフローを紹介します。 アーティストはMaya上でOrnatrixを使ってストランドを作成し、そのデータをalembicファイルとしてエクスポートします。 3 そのファイルをRE ENGINEにインポートします。Alembicのストランドはメッシュにバインドされます。 メッシュの変形とオブジェクトの衝突によって、ストランドの拘束が与えられます。 拘束は、Position based dynamicsと呼ばれる方法で解かれます。 その後、シミュレートされたストランドをすべてのストランドにブレンドするためにガイドシステムが使用されます。 このガイドシステムにより、処理のコストを削減します。 このフレームワークに基づいて、この講演を3つのパートに分けたいと思います。 バインディングのパートでは、ストランドがメッシュにどのようにバインドされるかを紹介します。 シミュレーションのパートでは、シミュレーションで使われる技術を紹介します。 ガイドパートでは、シミュレーション結果の補間方法と、ガイドのためのウェイトシステムの構築方法を紹介します。 ©CAPCOM 3
Simulation Workflow ストランド開発中のテスト用のアセット まずはシミュレーションの結果をお見せします。 このアセットは、開発中にシミュレーションが正しく機能するかどうかをチェックするために使用します。 4 このアセットのテスト後に、BIOHAZARD RE:4のアセットのテストに入ります。 ©CAPCOM 4
Simulation Use Cases from BIOHAZARD RE:4 BIOHAZARD RE:4のシミュレーションの使用例です。 5 ©CAPCOM 5
Simulation Use Cases from BIOHAZARD RE:4 これはBIOHAZARD RE:4で追加されたシミュレーションの使用例です。 髪のシミュレーションはBIOHAZARD RE:4のゲームプレイ中とカットシーンで使用されています。 ©CAPCOM 6 6
Binding ストランドをメッシュにバインド 1. SAH-BVHを実装 2. ストランドの根元からメッシュの 三角形までCPUでレイトレーシング Ingo Wald “On fast Construction of SAH-based Bounding Volume Hierarchies” *1 ストランドをメッシュにバインドする方法について説明します。 ストランドは複数の線分で構成されています。 基本的に、レイは線分からトレースされ、メッシュと交差するかどうかチェックされます。 7 もし交差していれば、ヒットトライアングル情報が記録されます。 その後、CPUベースのSAH-BVHが実装されましたが、全てのGPUがレイトレーシングをサポートしているわけではないからです。 シーンはそれほど複雑ではなく、交差テストにはバインドメッシュとバインドストランドしか存在しないため、 パフォーマンスは実用的なユースケースとしては許容範囲です。 ©CAPCOM 7
Binding Result • トレースの方向は、ストランドが頭部 と交差するかどうかによって決まる Iterative traces from two directions. Takes minimum distance to root position. • ヒットに失敗したら、 もう一度反復トレースする • 最短距離でヒットを取る Barycentric UV Mesh indices A, B, C Invalid all properties トレースが失敗するケースはいくつかあります。 レイが最初のトレースでメッシュと交差しない場合、レイは2方向から繰り返しトレースされます。 ストランドのルート位置までの最短距離を取ります。 8 すべてのトレースが失敗した場合、結果として無効フラグが記録されます。 メッシュが交差した場合、メッシュのインデックスとUV座標がバインドアセットに書き込まれます。 ©CAPCOM 8
Strand Binding Update Mesh Deformation Deform transformation Blend Shape Skinning Rest Deformed Mesh Rest Mesh Rotation / Translation Offset Update All Vertex in Strand Curve Deformed ストランドのバインディングの更新では、deformed meshとrest meshの違いを比較します。 transform matrixに(rotation/translation)の変化を保存し、すべての髪の毛のvertexに適用します。 9 その後、すべてのストランドの頂点を通して行列を更新し、それらの変換をdeformed meshと一致させます。 ©CAPCOM 9
Implementation of XPBD Miles Macklin, Matthias Muller, Nuttapong Chentanez “XPBD: Position-Based Simulation of Compliant Constrained Dynamics” *2 次のステップは、ストランドのシミュレーションです。 我々のアプローチはXPBDのアルゴリズムに基づいて作られています。 XPBDは、力やインパルスの代わりに、オブジェクトメッシュの頂点位置を直接操作する方法です。 10 XPBDは、反復投影スキームを使用して、位置に関する一連の制約を解きます。 ここで、位置は各反復の制約を満たします。 XPBDは、拘束の剛性を制御するコンプライアンスパラメータを導入することで、位置ベースの物理挙動を改善します。 ©CAPCOM 10
Orientation Deformation Improved • クオータニオンによって角度の制約をもたらす • 角度制約は、XPBDを通して位置制約と同じように解決 • ねじれやせん断変形に対して拡張可能 Kugelstadt, Tassilo and Schömer, Elmar “Position and Orientation Based Cosserat Rods” *3 方位変形ベースのロジックは「Position and Orientation Based Cosserat Rods」 の論文に基づいて実装されています。 この論文は、PBDフレームワークの中で弾性ロッドをシミュレートするための新しい方法を提示しています。 11 本論文では、クオータニオンで表現される方位をカップリングする新しいタイプの制約を提案します。 ひずみ測定はPBDの制約として直接使用されます。 また、この手法が高速でロバストであり、アーティファクトをほとんど発生させることなく大きな変形を扱うことができます。 ©CAPCOM 11
Implementation Velocity Field Advect Delta Time Substep Substep Substep Substep Linear Interpolation final deformed status Collision Constraint XPBD Solver Step Interpolation Wind Guide Interpolation Advect Gravity 具体的な実施方法について話します。 基本的には、他のPBDメソッドと同じです。 12 まず、空気抵抗力と重力を含む移流ステップを通して外力を加えます。 その後、ストランド頂点を通して衝突を解きます。 XPBD拘束射影はシステムを解くために繰り返し適用されます。 最後に、すべてのストランドにガイドストランドを伝播させるためにガイド補間が適用されます。 各フレームはサブステップに分けられます。 サブステップを解くとき、フレームが不安定になるのを避けるために、現在と以前の状態を更新する必要があります。 ©CAPCOM 12
Strain Limiting • 大きなモーションの場合、シミュレーションの結果 がアーティストの期待通りにならないことがある • 急激な変化を防ぐために変形勾配を制限する Jerry Hsu, Tongtong Wang, Zherong Pan, Xifeng Gao, Cem Yuksel, Kui Wu “Sag-Free Initialization for Strand-Based Hybrid Hair Simulation” 大きなモーションの場合、シミュレーションの結果がアーティストの期待通りにならないことがあります。 この問題を解決するために、各サブステップの変形勾配は最大値にクランプされます。 しかし、それでも物理的に正確な解決にはなりません。 13 BIOHAZARD RE:4のカットシーンの処理では、キャラクターが瞬間的に移動することによって 初期フレームが不安定になることがありました。 リセットポジションフラグは、最初のフレームをウォームアップする際の予期せぬ変形に対処するために使用されます。 もう1つの潜在的な問題は、髪の毛同士の摩擦や内部力が不足しているために、 最初のフレームのヘアースタイルがアーティストのデザインしたものから変わってしまうことです。 テンセントのライトスピード・スタジオが最近の研究でこの問題を解決しました。 詳細は次の論文を御覧ください。 "Sag-Free Initialization for Strand-Based Hybrid Hair Simulation" ©CAPCOM 13
Guiding Original Guiding • 全ストランドの1~5%を占める • ガイドを決定する要素 1. ストランド形状の類似性 2. ストランド位置の距離 ガイド補間について説明します。 パフォーマンスを向上させるために、シミュレーションでは1%から5%のストランドバジェットを使用します。 これをガイドストランドと呼んでいます。 14 どのストランドをガイドにするかを決めるアルゴリズムはストランドの形状の類似性と、 ストランドの根本の位置の距離に依存します。 ©CAPCOM 14
Guiding Shape similarity Position distance K means iteration • 形状の類似度は複数回計算され、 結果をキャッシュする • 通常のストランドに重みを持たせるために、 1~3本のガイドストランドを使用する Assign weight すべてのストランドの形状は大きなグループにエンコードされます。 最初のステップは、クラスターメソッドを使って類似したストランドを集約します。 その後、クラスタを通して平均値を求め、選択された候補をその周りのストランドのガイドとして使用します。 15 そして、他のストランドはガイドストランドから重みを割り当てられます。 通常のストランドに重みを与えるために、1~3本のガイドストランドが使用されます。 ©CAPCOM 15
Strand Models Strand count ルイス レオン アシュリー エイダ 25,978 23,115 21,291 38,751 Vertices count ルイス レオン アシュリー エイダ 1,298,900 1,386,900 2,129,100 1,923,550 パフォーマンスについてです。 アーティストは、BIOHAZARD RE:4の1つのヘアモデルにつき平均2万本のストランドを作成しました。 これには平均200万頂点が含まれます。 16 表はBIOHAZARD RE:4の主要キャラクターのストランド数と頂点数です。 ©CAPCOM 16
LOD Factor すべてのストランドをレンダリングした場合 • 60~70ms ストランドの30%のみをレンダリングした場合 • 35ms Scene 35.3312ms →このままでは重い シェーディングの最適化が終わると、4人のキャラクターが居る画像のシーンは1フレームあたり約60~70msで動作しました。 パフォーマンスの負荷を軽減するために、ストランド数をカットする手法を用います。 17 しかし、1シーンで使用されるストランドの数が30%であっても、 PS5で要求されるパフォーマンスを達成することは出来ませんでした。 BIOHAZARD RE:4ではルイス、レオン、アシュリーが同時に登場するシーンがあります。 ©CAPCOM 17
LOD Factor Comparison (PS5) Strand count before ルイス レオン アシュリー エイダ 25,978 23,115 21,291 38,751 Scene 60~70ms Strand count after (original * 0.3) ルイス レオン アシュリー エイダ 7,793 6,934 6,387 11,625 Scene 35.3312ms より詳細に説明します。 表から、ストランドの数を平均20,000本から7,000本に減らしたことが分かります。 これにより、1フレームあたりのパフォーマンスが60msから35msに向上しました。 18 しかし、それでもタイトルの目的には十分ではありません。 人間の髪の毛は約10万本あることがわかっています。 その本数を減らしすぎると、ストランドが太くなったり、まばらになってしまいます。 ©CAPCOM 18
Vertex LOD Average strand length Expected vertex count • 異なるLOD間の変形をスムーズに補間する のが難しい Interpolation vertex through steps (Length / vertex count) • BIOHAZARD RE:4では平均16頂点を使用 Vertex LOD Jiayi Eris Zhang, Jérémie Dumas, Yun (Raymond) Fei, Alec Jacobson, Doug L. James, Danny M. Kaufman “Progressive Simulation for Cloth Quasistatics” 頭部とカメラの距離が遠い場合は、ストランド数を減らすことは有効になります。 そうでない場合、アーティファクトを引き起こすリスクが高まる可能性があります。 ストランドの70%をカットしたとしても、リアルタイム性能に達するにはまだ十分ではありません。 19 頂点数を減らすLODシステムには、別のアプローチも用意されています。 まず、平均的なストランドの長さを計算します。予想された頂点数もパラメータから与えます。 その後、頂点は平均の長さを予想した頂点数で割った値で補間します。 この方法の問題点の一つは、異なるLOD間の変形をスムーズに補間することが難しいことです。 これを解決するアイデアとしては、シミュレーションを計算するために同じモデルを使用し、 すべてのLODを通して一貫したシミュレーション結果を補間することです。 ただし、その場合は不必要な処理コストがかかることがあります。 最近、Eris Zhangさんは、布のシミュレーションを通して漸進的なLOD補間について研究結果を発表しました。 もし興味があれば、彼女の仕事をチェックしてみてください。 ©CAPCOM 19
Vertex LOD Before (35 ms) PS5の測定結果 • 合計15ms削減 1. レンダリングに13ms 2. シミュレーションに2ms After (20 ms) 頂点LODが適用された後、15ms処理コストが削減されました。 13msはレンダリングバジェットの節約で、主にシェーディングによるものです。 20 2msはシミュレーションから節約されます。 これは頂点がシミュレーションの負担になるからです。 残りとガイド位置の更新は、シミュレーションによって避けられないコストとなります。 ©CAPCOM 20
Vertex LOD Visual Comparison Original (1,386,900) Vertex LOD (290,052) 画像は、オリジナルの結果とLODの結果の比較です。 80%の頂点がLODによってカットされています。 21 LOD結果の方がはるかに滑らかであることがわかります。 アーティストはこの結果をパフォーマンスを改善するための解決策の1つとして受け入れました。 しかし、この方法を見直すと、LOD補間アルゴリズムを調整することで 柔らかくなったアーティファクトを改善できる可能性があります。 この結果は将来改善される可能性があります。 ©CAPCOM 21
Vertex LOD Comparison Strand Vertex before ルイス レオン アシュリー エイダ 1,298,900 * 0.3 1,386,900 * 0.3 2,129,100 * 0.3 1,923,550 * 0.3 Scene 35.3312ms Strand Vertex after ルイス レオン アシュリー エイダ 316,252 * 0.3 290,052 * 0.3 289,904 * 0.3 264,960 * 0.3 Scene 20.0729ms 最終結果はこのようになります。 これらの調整に加えて、デュアルスキャッタリング最適化もゲームシーンで使用されました。 シーンのパフォーマンスをさらに向上させ、タイトルのパフォーマンス目標を達成しました。 ©CAPCOM 22 22
Simulation Performance Function Time Initialize Less than 0.1 ms Root Binding Less than 0.1 ms Strand Binding 0.2 – 0.4 ms Simulation 0.4 ms Interpolation 0.1 ms Guiding 0.2 – 0.4 ms Total 1 ms • PS5のパフォーマンス • 変形バインディングとガイディングの性能は 頂点数に依存する • 非同期計算への移行後、BIOHAZARD RE:4では 1キャラクターあたり1ms以下 PS5のシミュレーションのパフォーマンスについて説明します。 一般的に言って、BIOHAZARD RE:4の1キャラクターあたり1msの負荷は悪くありませんが、まだ改善の余地があります。 23 ほとんどの場合、変形のバインディングとストランドガイドの性能は頂点数に依存します。 処理負荷を見直すとき、バインディングの進捗が最終的なガイドの進捗にマージできます。 これは0.1-0.2msの節約になります。 シミュレーションも最新の技術によって改善される可能性があります。 ©CAPCOM 23
Animation framework Strand Alembic (*.abc) Rig Info (*.abc) Strand Asset Puppet (*.fbx) Animation シミュレーション以外では、ストランドアニメーションのフレームワークも提供しています。 ストランドとリグの情報はMayaで生成され、ストランドアセットとしてエクスポートされます。 24 パペットメッシュは、ジョイントとアニメーション情報の保存に使用されます。 チェーンシミュレーションは、BIOHAZARD RE:4のPS4世代シミュレーションで使用されたもので、 このアプローチでも同様に使用できます。 ©CAPCOM 24
Maya custom attribute Maya alembic plugin Joint Name List Joint Matrix List Strand Joint Index List Strand Weight List • 自動ウェイトバインディングを試みたが失敗 • Mayaでアーティストがウェイトをコントロール RE ENGINE importer ジョイントマトリックスとストランドウェイトはMayaからインポートされます。 最初、アーティストはストランドの自動ウェイトシステムを通して、 ジョイント・ガイドをストランドにバインドすることを提案します。 25 その手法が動かない理由はアーティストが提供されたジョイントはストランドデータと一致しないからです。 一部のアーティファクトが除去し難い理由は、違う形のメッシュはstrandにうまくバインドできないからです。 アーティストと話し合った後、Mayaでウェイトをコントロールし、 ウェイトデータはalembicファイルとして保存され、RE ENGINEにインポートされます。 その後、ストランドがパペットメッシュにウェイトをバインドします。 アニメーションやCPUベースのシミュレーションもこの方法で行うことができます。 しかし、アニメーションでもCPUベースのシミュレーションでも、視覚的な品質が十分でないため この方法を使うことはお勧め出来ません。 新しいハードウェアが開発されれば、より正確なリアルタイムシミュレーションを使用するべきです。 ©CAPCOM 25
ADMM ADMM(交互方向乗数法)に基づく DERによる分解暗黙的時間積分 GPU最適化 • グローバル三角解法 • 局所弾性を解く Gilles Daviet “Simple and Scalable Frictional Contacts for Thin Nodal Objects” *4 Gilles Daviet “Interactive Hair Simulation on the GPU using ADMM” *5 Daviet氏は、「交互方向乗数法」(略して「ADMM」)を用いて、細い節点間の摩擦接触を シミュレートする新しい方法を提案しています。 このアルゴリズムは、凸最適化問題を細かく分割して解きます。 26 これは拡張ラグランジアン法に基づいており、制約のある最適化問題を制約のない最適化問題に置き換えます。 このアルゴリズムは、摩擦接触力学問題を2つのサブ問題に分割します。 最近、このアルゴリズムはローカル-グローバルソルバーによって最適化され、GPUでの性能が大幅に向上しました。 これは、リアルタイムゲームにおいてより正確なシミュレーションモデルを提供するための将来の方向性の1つであると考えます。 ©CAPCOM 26
Hybrid MPM メリット 1. 他のマテリアルとの交差をサポート 2. コリジョンソリューションの改善 デメリット 1. MPM最適化 Xuchen Han, Theodore F. Gast, Qi Guo, Stephanie Wang, Chenfanfu Jiang, Joseph Teran “A Hybrid Material Point Method for Frictional Contact with Diverse Materials” *6 一方、別のグループはFEMとMPMを使い、スピードと精度を高めています。 「Hybrid Lagrangian Material Point Method」 (MPM)と命名された毛髪のシミュレーションです。 この方法では、接触にはラグランジュメッシュを使用し、マテリアル変形にはオイラーグリッドを使用します。 27 ラグランジュメッシュは、接触力とインパルスを計算し、それらをグリッドに伝達するために使用します。 オイラー型グリッドはマテリアルの変形と応力を計算し、粒子の位置と速度を更新するために使用されます。 また、本論文では、雪のような多様なマテリアルとの摩擦接触を含む様々な例を通して、本手法の有効性と汎用性を示しています。 ©CAPCOM 27
Conclusion ストランド・シミュレーション・システム 1. バインディング 2. シミュレーション 3. ガイド ストランド・アニメーション・システム 今後のシミュレーション改善 結論として、本講演ではバインディングからシミュレーション、ガイド過程に至るまで、 RE ENGINEにおけるstrand physicsを紹介しました。 また、RE ENGINEにおけるストランドアニメーションの進展についても説明し、 今後のストランドシミュレーションの方向性について述べました。 ©CAPCOM 28 28
Thank you for listening. Quotation Reference 1. Ingo Wald IEEE "On fast Construction of SAH-based Bounding Volume Hierarchies" October 8, 2007 https://www.sci.utah.edu/~wald/Publications/2007/ParallelBVHBuild/fastbuild.pdf(2023/8/24) ⚫ 2. Miles Macklin, Matthias Muller, Nuttapong Chentanez MIG '16 "XPBD: Position-Based Simulation of Compliant Constrained Dynamics" October 10, 2016 https://matthias-research.github.io/pages/publications/XPBD.pdf(2023/8/24) 3. Kugelstadt, Tassilo and Schömer, Elmar SIGGRAPH "Position and Orientation Based Cosserat Rods" 2016 https://animation.rwth-aachen.de/media/papers/2016-SCA-Cosserat-Rods.pdf(2023/8/24) 4. Gilles Daviet ACM Transactions on GraphicsVolume 39 "Simple and Scalable Frictional Contacts for Thin Nodal Objects" August 12, 2020 http://gdaviet.fr/files/hardContacts.pdf(2023/8/24) 5. Gilles Daviet SIGGRAPH "Interactive Hair Simulation on the GPU using ADMM" August 6, 2023 https://d1qx31qr3h6wln.cloudfront.net/publications/Interactive%20Hair%20Simulation%20on%20 the%20GPU%20Using%20ADMM.pdf(2023/8/24) 6. Xuchen Han, Theodore F. Gast, Qi Guo, Stephanie Wang, Chenfanfu Jiang, Joseph Teran Proceedings of the ACM on Computer Graphics and Interactive Techniques, Volume 2"A Hybrid Material Point Method for Frictional Contact with Diverse Materials" July 26, 2019 https://qig.github.io/Hybrid_MPM.pdf(2023/8/24) Jerry Hsu, Tongtong Wang, Zherong Pan, Xifeng Gao, Cem Yuksel, Kui Wu "Sag-Free Initialization for Strand-Based Hybrid Hair Simulation" July 26, 2023 https://graphics.cs.utah.edu/research/projects/sag-freehair/sig23_sagfree-hair.pdf ⚫ Jiayi Eris Zhang, Jérémie Dumas, Yun (Raymond) Fei, Alec Jacobson, Doug L. James, Danny M. Kaufman SIGGRAPH Asia 2022 "Progressive Simulation for Cloth Quasistatics" 2022 https://pcs-sim.github.io/pcs-main.pdf ⚫ Chenfanfu Jiang, Craig Schroeder, Joseph Teran, Alexey Stomakhin, Andrew Selle SIGGRAPH 2016 "The Material Point Method for Simulating Continuum Materials" May, 2016 https://www.math.ucla.edu/~cffjiang/research/mpmcourse/mpm course.pdf 私のプレゼンテーションは以上です。 ご清聴ありがとうございました。 ©CAPCOM 29