グラフィックランツ:ナナイトテッセレーション
Graphic Rants: Nanite Tessellation (graphicrants.blogspot.com)
要約
この記事は、Unreal Engine 5.4で導入されたNanite Tessellation(動的メッシュテッセレーションとディスプレイスメント)の技術的な詳細と、その必要性について解説しています。筆者は、Nanite自体が仮想化ジオメトリ問題の汎用的な解決策であるとしつつも、テッセレーションがデータ圧縮やアーティストのワークフロー、スケーラビリティの観点から依然として重要である理由を説明しています。
全文翻訳
Graphic Rants: Nanite Tessellation
Nanite Tessellation、別名 Nanite Dynamic Tessellation、あるいは Nanite Dynamic Displacement は、Nanite 自体の次に私が取り組んだ主要な機能でした。初期のプロトタイプは、Nanite を初めて一般公開してからわずか数ヶ月後の2020年に始まりました。UE5 はまだ顧客向けにリリースされていませんでした。Nanite を様々な製品に搭載して数年、さらに数年の開発を経て、Nanite Tessellation はついに2024年の UE 5.4 でリリースされました。私はその後すぐにこの執筆を開始しましたが、予想よりもはるかに長い時間がかかりました。言うまでもなく、これらすべてを公開するのは長年の懸案でした。この記事から始まる一連の投稿で公開されます。
投稿リスト:
- イントロ
- 可能なアプローチ
- テッセレーションの方法
- Nanite + Reyes
- 可変サイズのワーク
- 頂点の重複排除 / ポストトランスフォームキャッシュ(近日公開)
- VisBuffer / 遅延マテリアル
- まとめ
Nanite Tessellation とは何か?
メッシュを動的にテッセレートし、ディスプレイスメントを適用するシステムです。ディスプレイスメントは、UEのマテリアルエディタで作成されたシェーダーグラフから生成されます。このテッセレーションは、Nanite が既に提供しているものに追加されるものです。
GDC でデモされたテッセレーション(Marvel's 1943: Rise of Hydra)
[
[画像:Nanite Tessellation のデモシーン]
](https://blogger.googleusercontent.com/img/a/AVvXsEjLzKmvk3p-qMtU30lxAttjY48fQqX1nUr2ceM2630bDzcNEjW_bDFM-V8_Vgzf-hb81vvxZ7lKyc2_KnEPubvoBoWV1OQojO5HYA5xXqre3vBbCNqgwg-Y5eqbeLyi9yNuxszGg6VwG4gDf8um_aIeB-OfPeLVJumCxlUh521p3Wmop1CQe1NP-Pte7Sk=s16000)
パッチ
[
[画像:テッセレーションにおけるパッチの概念図]
](https://blogger.googleusercontent.com/img/a/AVvXsEi1z72Ch72mJhn2mCWMw6Sf7nH8X82rhWCicYi36Avv3NIQiy-a8ctHFh20L0Fe0qr9LKLVKT2nW_je6I9gfVc6k7GcLh5sgnF8KQmdMx5QKZ6HVhsGbXyS5kJDe7Q7z7WBHUNsCSRK9r8sq5BtKsDnVwAuJnG44b9u5QvcCib4cZn-iylyyHift0pT54M=s16000)
ダイスされた三角形
[
[画像:テッセレーションによって細分化された三角形]
](https://blogger.googleusercontent.com/img/a/AVvXsEjfB5rJ35IbaqTjDdpksJzjN-rV589XNDm8IpMoM-mTBeujYu_YTZLYdD3IlKoOTLXicZyv7mERQHskUC5HOhNV9sr70K1yCRwHd3uQKy9MgYna-OjZ6Q2UPvB5Gk-_kH1YimjlyMnaU2vdNDtu9M1FRGCEjdPRRDU34UDWLwUeTbrIJdFOsGBA7fzjc2Y=s16000)
最終的なピクセル
なぜ?
Nanite があるのに、なぜジオメトリの増幅が必要なのでしょうか?私は以前、増幅アプローチは仮想化ジオメトリの問題に対する万能な解決策ではないと主張しました。では、なぜ今になってそれに取り組み始めたのでしょうか?私の考えは変わったのでしょうか?いいえ。私の主張は、増幅アプローチは仮想化ジオメトリの問題に対する汎用的な解決策ではないということでした。それらはすべてのケースを解決するわけではありません。表面の種(genus)を変えることはできません。単純化アプローチが常に必要になるでしょう。もしそれがあれば、増幅も解決できるでしょう。メッシュはオフラインで合成、サブディバイド、テッセレート、および/またはディスプレイスメントすることが常に可能です。その後、単純化によってそれを削減できます。これはデータストレージへの影響を無視していますが、その問題に対するより汎用的な解決策であることを示しています。
そして今、それがあります。それはNaniteと呼ばれ、非常にクールです。最初に作業するのに適切なものでした。しかし、このソリューションがこれらの他のケースにも使用できるほど汎用的であるからといって、それらにとって理想的であるとは限りません。不規則なメッシュの完全なトポロジーを保存することは、すべてのケースをカバーしますが、コストがかかります。表面上のすべての位置を、完全な属性セットを持つ3Dポイントとして保存するのは高価です。私たちはデータを圧縮するために最善を尽くしますが、そのデータがないことにはかないません。
圧縮
スカラーディスプレイスメントフィールドは、アーティストが作成したマップであれ、詳細な表面を単純な表面に投影してキャプチャしたものであれ、はるかに少ないデータ量で済みます。5つ以上の値に対して1つの値です。人間の知覚に関連する通常の2Dデータ(つまり画像)の圧縮は、はるかに多くの研究が行われており、よく理解されています。
[
[画像:高ポリゴンと低ポリゴン+法線マップ+ディスプレイスメントマップのディスクサイズ比較]
](https://blogger.googleusercontent.com/img/a/AVvXsEhbg3WYwL8jiqnZQ0LvJ543rnPfdAx-PEpSZknROJzM4zbhpqPC-tZwJmc1lhtY_o96U-gEgRXeQd12WTVz42arwBcdKrAEWg2dqos0zG7eK1hNiCCMzrQkJxmiGZpxM1aV3O8BbAChoTeUNvjheENV-BYuEKlspaCYqk1TT-wlhG_BQKIa_abw_oK4cgU)[
[画像:ディスプレイスメントマップの例]
](https://blogger.googleusercontent.com/img/a/AVvXsEi_hnE8z8T0dhzKJVHk_jfAx1wUP7EpQSa4ahgIrvrt6AclX1AswHxrsdE1gJ6Y8Ai4ElazESmeBm25IEOaFU7UK_DT7W2uER_RwdcLnug2mQJlkrzComz_cNPQkM_g_gZupqFFdR1n_BZ5b4lPzF-ciZd83V1TGh33Ji1JHEwh59bofWBCEqSbNCuQQeQ)
これよりもさらに優れたデータ圧縮は、プロシージャルテクスチャリングアプローチです。プロシージャルテクスチャリングとは何を意味するのでしょうか?私はペルリンノイズのような数学的関数だけを指しているわけではありません。定義を少し広げているかもしれませんが、単純なテクスチャタイリングでさえ、ある意味ではプロシージャルテクスチャリングの一形態です。しかし、複数のテクスチャが混合され、変更されるシェーダーが関わるようになると、確かにプロシージャルの領域に入ります。この最も単純な形態はディテールテクスチャリングです。明示的に保存されるよりもはるかに高い周波数の信号を表すことができます。このように静的に見ると、圧縮率は他のどの手段よりもはるかに高くなります。
オーサリング
しかし、データ圧縮を超えて、プロシージャルコンテンツ生成はアーティストにとって信じられないほど効果的な時間節約になります。また、再利用可能、動的、アニメーション可能でもあります。再利用可能とは、雪のようなベースのマテリアルタイプを一度作成すれば、多くのサーフェスに適用できることを意味します。動的とは、同じアセットがシェーダーパラメータを変更することで時間とともに雪を蓄積したり、完全にアニメーションする溶岩流のようなものになったりすることを意味します。
ディスプレイスメントマップは映画では非常に一般的であり、その使用の主な理由はデータ圧縮ではありません。かなりの部分はツールに起因しており、私はツールを改善すべきであり、Nanite の機能に追いつくのは他の誰かの責任だと主張することもできますが、事実として、私は指を鳴らしてすべての DCC を変えることはできません。すべてのアプリケーションが高ポリゴンメッシュでより良く動作するように最適化されていたとしても、2Dテクスチャには常に本質的に単純なものがあり、ディスプレイスメントマップも例外ではありません。
映画におけるディスプレイスメントの使用は、アニメーションにも役立ちます。キャラクターの場合、ベースケージをリグして変形させることができます。変形したケージは、最終的なディテールを得るためにスムーズにサブディバイドされ、ディスプレイスメントされます。これにより、リガーやアニメーターの懸念が軽減され、個々のドラゴンの鱗を彫刻する彫刻家からある程度分離されます。
最後のユースケースはゲームに特有です。スケーラビリティは、Fortnite や、Nanite パイプラインを実行するのに十分なパワーを持たないローエンドプラットフォームをまだサポートする必要がある他のゲームにとって重要な考慮事項です。Nanite が使用するのと同じメッシュ単純化アルゴリズムを通じてローポリフォールバックメッシュを簡単に生成できますが、遠距離では問題ないものでも、近くでは十分とは限りません。ローポリモデリングの技術は、しばしば形状の抽象化の問題であり、アーティストは結果に対してよりうるさいです。また、メッシュからテクスチャへとドメイン間でディテールを移動させることもあり、他のアセットの関与が必要になりますが、これは自動的に信頼性高く行うのが困難または不可能です。これらの理由から、Fortnite のような大きなスケーラビリティ範囲が必要な場合、アートチームは、高解像度で作成して単純化するよりも、スケーラビリティ範囲のローまたはミッドで作成し、それを増幅することに慣れています。