>>>> ORIGINAL //Documentation/UE-5.3/5.3/Source/designing-visuals-rendering-and-graphics/rendering-optimization/nanite/Nanite.JPN.udn#6 Hero-image: nanite-herobanner.png Version:5.2
==== THEIRS //Documentation/UE-5.3/5.3/Source/designing-visuals-rendering-and-graphics/rendering-optimization/nanite/Nanite.JPN.udn#7 Hero-image: nanite-hero-image.png Version: 5.3 ==== YOURS //zeel.sheladiya_PC-SHELADIYA_3718_UE_5.3/Source/designing-visuals-rendering-and-graphics/rendering-optimization/nanite/Nanite.JPN.udn Hero-image: nanite-herobanner.png Version:5.2
<<<<
Nanite は Unreal Engine 5 の仮想化ジオメトリ システムであり、新しい内部メッシュ フォーマットとレンダリング テクノロジーを活用して、ピクセル スケールのディテールと多数のオブジェクトをレンダリングします。人が知覚できるディテールだけをインテリジェントに処理し、それ以上は行いません。Nanite のデータ形式は高度に圧縮され、きめ細かいストリーミングと自動詳細度 (LOD) をサポートします。

Nanite の利点
- ジオメトリの複雑さが数桁分増加して、リアルタイムで以前よりも多くの三角ポリゴンとオブジェクトを処理可能になりました
- フレーム バジェットが、ポリゴン数、ドローコール数、メッシュ メモリ使用の制限を受けなくなりました
- ZBrush スカルプトやフォトグラメトリ スキャンといったフィルム品質のソース アートを直接インポートすることが可能になりました
- ディテールをノーマル マップ テクスチャにベイクするのではなく、ハイ ポリゴンのディテールを使用します
- 詳細度 (LOD) が自動的に処理されるため、個々のメッシュの LOD を手動で設定する必要がなくなりました
- 品質の低下は、特に LOD トランジションでは稀であるか発生しません
これらの利点は非常に革新的なものですが、実際にはまだいくつかの制限も残っています。たとえば、コンテンツとハードウェアを組み合わせる上で、インスタンス数、メッシュあたりの三角ポリゴン数、マテリアルの複雑さ、出力解像度、およびパフォーマンスを慎重に測定する必要があります。Nanite は比較的新しい技術であり、今後の Unreal Engine のリリースにおいて継続的に機能の拡張およびパフォーマンスの改善が行われる予定です。
Nanite メッシュとスタティックメッシュの違い
Nanite メッシュとは、Nanite が有効なスタティックメッシュを指します。Nanite メッシュは基本的に三角ポリゴンのメッシュであり、データには多くの詳細度 (LOD) と圧縮が適用されています。それに加えて、Nanite ではまったく新しいシステムを使用して、そのデータ形式を非常に効率的な方法でレンダリングします。
Nanite を利用するためにスタティックメッシュで必要なのは、Nanite を有効にすることだけです。Nanite のコンテンツのオーサリングは従来のメッシュと同じですが、Nanite が従来のレンダリングされたジオメトリよりも格段に多くの三角ポリゴンとインスタンスを処理できる点が違います。カメラを十分近づけると、Nanite はインポートされた元のソースの三角ポリゴンを描画します。
Nanite メッシュは、多数の UV と頂点カラーをサポートします。マテリアルはメッシュのセクションに割り当てられ、シェーダーで実行可能なさまざまなシェーディング モデルとダイナミック エフェクトを、それらのマテリアルで使用することができます。他のスタティックメッシュと同じように、マテリアルの割り当てを動的に入れ替えることができ、Nanite はマテリアルをベイク処理するプロセスを必要としません。
Nanite では必須ではありませんが、仮想テクスチャ を使用することを強く推奨します。仮想テクスチャは、Nanite がメッシュ データを使って達成するテクスチャ データと同様の目標を持つ、Unreal Engine のオルソゴナルな機能です。
Nanite での作業はスタティックメッシュのワークフローに似ていますが、まだサポートされていない機能がたくさんあります。詳細については、本ページの「サポートされる機能」セクションを参照してください。
Nanite の動作
Nanite は、メッシュ データの保存とレンダリングに新しいアプローチを使用しながら、既存のエンジン ワークフローに可能な限りシームレスに統合されます。
- インポート時 — メッシュが解析され、三角ポリゴン グループの階層的なクラスタに分割されます。
- レンダリング時 — クラスタはカメラ ビューに基づいて変化する詳細度でオンザフライで交換され、同じオブジェクト内の隣接するクラスタにクラックなしで完全に接続されます。データはオンデマンドでストリーミングされるため、目に見えるディテールだけをメモリに保存する必要があります。Nanite は、従来のドローコールを完全にバイパスする独自のレンダリング パスで実行されます。ビジュアライゼーション モードは、Nanite パイプラインを検査するために使用することができます。
Nanite は、オンディマンドでディスクのメッシュ データを高速ストリーミングする機能に依存しているため、ランタイム ストレージにはソリッド ステート ドライブ (SSD) を推奨します。
Nanite を使用すべきメッシュのタイプ
一般的に Nanite は可能な限り有効にすべきです。スタティックメッシュで Nanite を有効にすると、通常はレンダリングが高速化され、メモリとディスク領域の消費が削減されます。
具体的には、Nanite に特に向いているメッシュには以下のようなものがあります。
- 画面上に多数または非常に小さな三角ポリゴンが存在するメッシュ
- シーン内に多数のインスタンスを持つメッシュ
- 他の Nanite ジオメトリの主要なオクルーダとして機能するメッシュ
- 仮想シャドウ マップ を使ってシャドウをキャストするメッシュ
これらのルールの例外としては、たとえば天球のようなものがあります。そのトライアングルは画面上で大きく、何もオクルードせず、シーン内に 1 つしかありません。通常、このような例外は稀であり、これらで Nanite を使用することによるパフォーマンスの損失はほとんど最小限に抑えられるため、Nanite が有用なユース ケースにおいては、Nanite を有効にすべきでない状況について過度に懸念する必要はありません。
現在、一部のユース ケースでは Nanite はサポートされていません。詳細については、本ページの「サポートされる機能」セクションを参照してください。
メッシュで Nanite のサポートを有効にする
Nanite は、サポートされているジオメトリで次の方法で有効にできます。
ジオメトリを Nanite に変換するプロセスでは、メッシュごとにある程度の処理時間がかかります。大規模なプロジェクトで多数の Nanite アセットがある場合は、共有派生データ キャッシュ (DDC) の利用が特に有効です。詳細については、「派生データのキャッシュ」ドキュメントを参照してください。
スタティックメッシュをインポートする
Nanite の使用を目的としたメッシュをインポートする場合は、[Build Nanite (Nanite をビルド)] チェックボックスをオンにします。

Lightmass で事前計算されたライティングを使用しない場合は、[Generate Lightmap UVs (ライトマップ UV の作成)] プロパティを無効にすることをお勧めします。
有効にすると、非常に詳細なジオメトリにより、スタティックメッシュ データのインポートと構築にかなりの時間がかかります。また、このプロパティにより、高密度なメッシュ用の膨大な量のデータを含む UV チャンネルがさらに追加されます。プロジェクトでベイク処理したライティングが必要でなければ、このような追加コストを抱える必要はありません。
アセットで Nanite を有効にする
Nanite を使用するコンテンツがすでにプロジェクトに取り込まれている場合は、コンテンツ ブラウザを使用してバッチでアセットを有効化する、あるいは、各自でエディタを使用して個々のアセットを有効化するという 2 つのオプションがあります。
メッシュで Nanite をバッチで有効にする
Nanite を有効にしたいスタティックメッシュ アセットのバッチについては、まず コンテンツ ブラウザ を使ってそれらをすべて選択し、右クリック してコンテキスト メニューから [Nanite] > [Enable (有効化)] を選択します。

個別のメッシュで Nanite を有効にする
スタティックメッシュや ジオメトリ コレクション (ケイオス物理駆動型の破砕メッシュ) など、Nanite をサポートするメッシュのエディタを開き、[Details (詳細)] パネルを使って Nanite を有効にします。
スタティックメッシュ エディタ内で、[Nanite Settings (Nanite 設定)] セクションにある [Enable Nanite Support (Nanite サポートを有効化)] ボックスにチェックを入れます。

ジオメトリ コレクション エディタ内では、[Nanite] セクションにある [Enable Nanite (Nanite を有効にする)] ボックスにチェックを入れます。

Nanite のサポートされている機能
このセクションでは、Unreal Engine プロジェクトで Nanite を最大限活用する方法と、サポートされる機能とそうでないもの、さらに制限事項について説明します。
ジオメトリ
Nanite は、スタティックメッシュおよび ジオメトリ コレクション で有効にすることができます。
Nanite が有効なメッシュは、次のコンポーネント タイプで使用できます。
- スタティックメッシュ
- インスタンス化されたスタティックメッシュ
- スプライン メッシュ
- 階層インスタンス化されたスタティックメッシュ
- ジオメトリ コレクション
- フォリッジ ペインター
- ランドスケープ グラス
Nanite スプライン メッシュは、設定 .ini ファイルで r.Nanite.AllowSplineMeshes=1
を調整することで有効にできます。ただし、これは実験段階の機能で、現在はパフォーマンス コストがかかり、すべての Nanite のカリング パフォーマンスに影響します。現在、極端な変形においてカリングが正しくないという既知の問題があります。
Nanite による剛体メッシュの変形のサポートは限定的です。Nanite は、動的か静的かにかかわらず、このメッシュの動的な移動、回転、および不均一なスケーリングをサポートします。これは、メッシュ全体に一様に適用される単一の 4x3 マトリックス乗算で表現できるよりも複雑な方法で、Nanite メッシュの任意の位置を移動することを意味します。
変形は、以下で限定されています。
- (ベータ) マテリアルのワールド位置オフセット (WPO)
- オクルージョン カリング クラスタに使用されるバウンディング ボックスでは、変形に基づいてバウンディング ボックスが更新されたり拡張されたりしません。つまり、以前に存在していた場所を覆うようにサーフェスが外側に変位することがあれば、サーフェスは自身をオクルードし、壊れているように表示される可能性があります。
- フォリッジは穴で満たされていて実質的に自身をオクルードできないため、WPO を使用したフォリッジでは問題が発生しにくくなります。
変形は、以下でサポートされていません。
- スケルタル アニメーション
- モーフ ターゲット
Nanite を有効にしたメッシュは現在以下をサポートしていません。
- インスタンス上の頂点ペイント
- 特に、エディタのメッシュ ペイント モードを使用する、インスタンスごとのペイント カラーを指しますが、Nanite では元のメッシュの頂点カラーはサポートされます。Nanite メッシュの頂点カラーを編集して作成するには、Paint Vertex Colors ツール を使用します。
シーンに存在可能なインスタンスの最大数は 1600 万インスタンスに固定されています。これには、Nanite の使用が有効になっているものだけでなく、ストリーミングで入力されるすべてのインスタンスが含まれます。ストリーミングで入力されるインスタンスのみが合計にカウントされます。
Nanite が有効になっている場合、頂点ごとの接線はスタティックメッシュから格納されません。代わりに、タンジェント空間がピクセル シェーダーで暗黙的に派生します。データ サイズを小さくするために、接線データは格納されません。このアプローチを使用した際にタンジェント空間に生じる差異により、エッジ部分で不連続性が発生する場合があります。ただし、この特定の問題が深刻になることは確認されておらず、頂点接線は今後のリリースでサポートされる予定です。
マテリアル
Nanite は、ブレンド モードが Opaque (不透明) および Masked (マスク) に設定されているマテリアルをサポートします。サポートされないマテリアル タイプが検出されると、デフォルトのマテリアルが Nanite が有効なメッシュに割り当てられて、出力ログ に追加の情報とともに警告が表示されます。
マテリアルの機能に関する追加の注記:
- Nanite が有効なメッシュは、そのサーフェスに投影されたデカールを受け取る場合がありますが、メッシュ デカール はサポートされません。このメッシュ デカールでは、マテリアルで Translucent (透過) ブレンド モードが使用されている必要があります。
- [Wireframe (ワイヤーフレーム)] チェックボックスはサポートされていません。
- Vertex Interpolator ノードと カスタム UV はサポートされていますが、ピクセルあたり 3 回評価されます。
- Custom 式ノード、またはこれらを使用するすべてのノード (ParallaxOcclusionMapping マテリアル関数など) をNanite と使うとアーティファクトが発生する場合があります。Nanite はまだ解析派生対応をしていないので、これは想定内です。
レンダリング
次のレンダリング機能は現在サポートされていません。
- 以下を使用する、オブジェクトのビュー特有のフィルタリング
- 画面の最小半径
- 距離カリング
- フォワード レンダリング
- VR のステレオ レンダリング
- 分割画面
- マルチサンプル アンチエイリアス (MSAA)
- ライティング チャンネル
- Nanite メッシュに対するレイトレーシング
- Nanite が有効なメッシュには、デフォルトでフォールバック メッシュが使用されます。ソース メッシュのトライアングルをより多く使用するには、スタティックメッシュ エディタの [Fallback Relative Error (フォールバック相対誤差)] パラメータの値を小さくします。
- (実験段階) Nanite メッシュのネイティブのレイトレーシングの初回サポートは、コンソール変数
r.RayTracing.Nanite.Mode 1
を使用することで有効になります。この手法ではディテールがすべて維持されますが、GPU のメモリ使用量がゼロ誤差フォールバック メッシュよりも大幅に少なくなります。
- 一部のビジュアライゼーション表示モードは、Nanite メッシュの表示をまだサポートしていません。
スタティックメッシュ エディタで、高精細ジオメトリの表示に一部のビジュアライゼーション モードを使用する際は注意が必要です。法線と UV を表示することで、エディタのパフォーマンスに問題が発生する場合があります。
サポートされるプラットフォーム
Nanite は現在 PlayStation 5、Xbox Series S|X、そしてシェーダー モデル 6 (SM6) を備え、DirectX 12 の最新ドライバーを使用する、次の仕様を満たすグラフィック カードを搭載した PC でサポートされています。
- NVIDIA:Maxwell 世代以降のカード
- AMD:GCN 世代以降のカード
- Windows 10 のすべての新しいバージョン (バージョン 1909.1350 以降) および DirectX 12 Agility SDK をサポートする Windows 11。
- Windows 10 バージョン 1909 — リビジョン番号は .1350 以降である必要があります。
- Windows 10 バージョン 2004 および 20H2 — リビジョン番号は .789 以降である必要があります。
- DirectX 12 (Shader Model 6.6 atomics) または Vulkan (VK_KHR_shader_atomic_int64)
- 最新のグラフィック ドライバ
PlayStation 4 と Xbox One でも Nanite はサポートされますが、これらのプラットフォームに対するサポートは現在実験段階にあります。これらのプラットフォーム上における忠実性の高いコンテンツでの Nanite のパフォーマンスは、シッピング用ゲームの要件を満たさない可能性があることが予想されます。
Nanite のフォールバック メッシュと精度の設定
スタティックメッシュには、Nanite の表現の精度を制御する追加のプロパティと、完全に詳細なメッシュから生成されたフォールバック メッシュが含まれます。
これらの設定は、スタティックメッシュ エディタの [Details] パネルにある [Nanite Settings] セクションにあります。

[Nanite Settings] には次のプロパティが含まれます。
プロパティ | 説明 |
---|---|
Enable Nanite Support | このメッシュが Nanite で使用されるのを有効にし、Nanite を使用できない状況ではフォールバック メッシュを生成できるようにします。 |
Preserve Area | 簡素化によってサーフェス領域が失われる Nanite メッシュで、開放境界エッジを拡張し、失われた領域を残りのトライアングルに再分配できるようにします。これは、簡素化によって葉が離れたトライアングルやクワッドになりがちなフォリッジを対象とする場合に最も役立ちます。この設定には、それぞれの葉がスケール アップされる効果があります。草の葉など、ジオメトリ リボンの場合は、厚みが増すという効果があります。この設定は、すべてのフォリッジのメッシュで有効にし、それ以外では有効にしないでください。 |
Explicit Tangents | true の場合、アセットごとに元のモデル接線を格納して使用します。この設定は、ランタイム時に暗黙的に導出された接線を使用する代わりに、ディスク上に接線を明示的に保存することを意味します。接線の精度設定は、頂点接線の追加制御で使用可能になります。この設定を有効にすると、約 10% ストレージが増加しますが、暗黙的な接線が十分に正確でない場合に望ましいことがあります。 |
Position Precision | Nanite メッシュの頂点の位置の生成時にメッシュで使用する精度を選択します。[Auto (自動)] に設定すると、メッシュのサイズに基づいて適切な精度が選択されます。精度は、精度の向上やディスク容量の最適化のためにオーバーライドすることができます。 |
Normal Precision | Nanite メッシュの頂点の法線の生成時にメッシュで使用する精度を選択します。[Auto (自動)] に設定すると、メッシュのサイズに基づいて適切な精度が選択されます。精度は、精度の向上やディスク容量の最適化のためにオーバーライドすることができます。 |
Minimum Residency | メッシュで常にメモリ内に維持するメモリ バイト サイズを設定します。残りはストリーミングされます。これを高く設定するとより多くのメモリが必要になりますが、一部のメッシュではストリーミングが頻発する問題が軽減されます。 |
Keep Triangle Percent | ソース メッシュから維持する三角ポリゴンの比率です。ディスク容量を最適化するにはこの比率を下げます。 |
Trim Relative Error | Nanite メッシュからの削除が可能な相対誤差の最大値を設定します。この相対誤差の値よりもビジュアル面の影響が少ないソース メッシュのすべての詳細が削除されます。相対誤差に単位サイズはありません。また、相対誤差はメッシュのサイズを基準としています。Nanite は、デフォルトで元のソース メッシュの三角ポリゴンをすべて格納します。 |
Fallback Target | フォールバック メッシュを生成するときに使用するターゲティング システムを決定します。 Auto (自動): プロジェクト設定に基づいてフォールバック メッシュを自動的に作成します。 Fallback Triangle Percent (フォールバックの三角ポリゴン比率): Nanite のソース メッシュを削減する際に維持する三角ポリゴン比率を設定します。 Fallback Relative Error (フォールバックの相対誤差): メッシュのサイズを基準として、指定誤差に達するまで減らします。この相対誤差の値よりもビジュアル面の影響が少ない生成済みのフォールバック メッシュのすべての詳細が削除されます。 |
Source Import Filename | Nanite で使用する高解像度メッシュをインポートするために使用されるファイル パス。より詳細なジオメトリの恩恵を受けることのできるシステム (Unreal Engine の Nanite やジオメトリ モデリングなど) によって LOD0 の代わりに高解像度バージョンのメッシュが使用されます。 |
Displacement UV Channel | ディスプレイスメント マップのサンプリング時に使用する UV チャンネル。 |
Displacement Maps | ディスプレイスメント マップを追加および編集します。 |
頂点精度
Nanite は、メッシュの頂点の位置を量子化してメモリ密度を最大化し、ディスク容量を最小限に抑えます。量子化ステップ サイズは 2 の累乗であり、Position Precision (位置精度) プロパティを使用して、個々のメッシュの要件に合うように選択することができます。デフォルトの [Auto (自動)] では、メッシュのサイズとその三角ポリゴン密度に基づいて適切な精度が選択されます。精度の向上やディスク容量の最適化のために、手動で精度サイズを選択してオーバーライドできます。

量子化は、非可逆圧縮の過程で多少の損失が発生します。非可逆圧縮は、モジューラー メッシュ要素または境界を共有するメッシュで作業する場合に特に問題になります。ジオメトリに穴や亀裂を起こさないように境界を完全に整列させる場合は特にそうです。
一貫性を維持するために、量子化は、メッシュ原点を中心に正規化されていないオブジェクトの座標で行われます。これにより、メッシュで同じ精度設定を使用している場合は量子化によってクラックが発生せず、メッシュの中心間の変換がその精度の倍数になることが保証されます。
データのトリミング
ディスク容量を最適化するために、Nanite が格納するデータ量を削減しなければならない場合があります。Nanite には、プロダクション過程のあらゆる段階で、格納された Nanite メッシュから詳細データをトリミングできる設定が含まれているため、最初に品質を高く設定して、後に状況に応じて調整することができます。
詳細データをトリミングするには、Keep Triangle Percent (三角ポリゴン比率を維持) プロパティと Trim Relative Error (相対誤差をトリミング) プロパティを使用します。これらは、Nanite メッシュとして格納される前のデシメーション オプションと捉えることができます。Nanite の場合、詳細をメッシュ全体で均一にする必要はありません。これによって最も関連性の少ないデータが最初に削除され、非可逆圧縮により近づきます。
ソース メッシュから維持する三角ポリゴンの比率を設定するには、Keep Triangle Percent プロパティを使用します。
ソース メッシュからデータをトリミングする際に許可する相対誤差の最大値を設定するには、Trim Relative Error プロパティを使用します。削除した際にこの値よりも少ない相対誤差が生じる三角ポリゴンがすべて削除されます。つまり、ビジュアル面の影響がこの値よりも少ないすべての詳細がトリミングされます。相対誤差に単位サイズはありません。また、相対誤差はメッシュのサイズを基準としています。
これら両方のプロパティはデフォルトで何もトリミングしないように設定されており、Nanite によって元のソース メッシュの三角ポリゴンがすべて格納されます。
データのトリミングはディスク容量 (ダウンロード サイズ) の削減には重要ですが、パフォーマンスの向上には影響しません。詳細については、後述の「データ サイズ」セクションを参照してください。
フォールバック メッシュ
Unreal Engine の多くの機能は、従来のメッシュ レンダリングで提供される頂点バッファにアクセスする必要があります。スタティックメッシュで Nanite を有効にすると、高精細メッシュの粗い表現 (フォールバック メッシュ) が生成されます。Nanite のレンダリングがサポートされない場合に、フォールバック メッシュが使用されます。また、フォールバック メッシュは、複雑なコリジョンが必要な場合や、ベイク処理されたライティングにライトマップを使用する必要がある場合、さらには Lumen を使ったハードウェア レイトレーシング反射に必要な場合など、完全に詳細なメッシュの使用が適していない状況でも使用されます。
Fallback Triangle Percent (フォールバックの三角ポリゴン比率) プロパティは、このフォールバック メッシュを生成するために使用される元のソース メッシュからの三角ポリゴン比率を表します。三角ポリゴン比率は 0 ~ 100% の値に設定でき、比率が高いと元のメッシュの詳細がより多く維持されます。
Fallback Relative Error (フォールバックの相対誤差) プロパティでは、ソース メッシュから詳細を削除する際に許可する相対誤差の最大値を設定します。削除した際にこの値よりも少ない相対誤差が生じる三角ポリゴンがすべて削除されます。その際は、ビジュアル面の影響が少ない詳細が最初に削除されます。相対誤差に単位サイズはありません。また、相対誤差はメッシュのサイズを基準としています。
たとえば、メッシュに対してデシメーションを行いたくない場合は、Fallback Triangle Percentage プロパティを「100」に、Fallback Relative Error プロパティを「0」に設定します。
次の比較画像では、元のソース メッシュから作成した高精細の Nanite メッシュと、生成された Nanite フォールバック メッシュのデフォルト設定を比べています。


元のソース メッシュから元の詳細をどれだけ維持するかを Fallback Relative Error プロパティで指定し、その詳細をどれだけ使用するかを Fallback Triangle Percentage プロパティで設定します。
次の比較画像では、フォールバック メッシュで Fallback Triangle Percent が 100% に維持されていますが、元のソース メッシュからの三角ポリゴンをより多く使用するために Fallback Relative Error が調整されています。これらの値を調整する場合に、Nanite 三角ポリゴンの Nanite 詳細をそれらの値を変更する際のインジケーターとしてビューポート内で使用できます。


フォールバック メッシュのビジュアライゼーション
スタティックメッシュ エディタでは、完全な詳細の Nanite メッシュと Nanite フォールバック メッシュを、ビューポートの [Show (表示)] ドロップダウン メニューにある [Nanite Fallback (Nanite フォールバック)] オプションを使って切り替えることができます。また、Ctrl + N ホット キーを使って 2 つのビジュアライゼーション モード間を切り替えることもできます。

Nanite が有効なメッシュにカスタム フォールバック メッシュ LOD を使用する
フォールバック メッシュは、複雑なポリゴンごとのコリジョン、レイトレーシング、ライトのベイク処理などのエンジン機能に使用されます。また、Nanite をサポートしないプラットフォームにも使用されます。フォールバック メッシュの生成時には、Nanite が有効なメッシュでは、常にソース メッシュの LOD0 スロットを使用してフォールバック メッシュを自動生成します。ただし、自動生成されたものではなく、手動で指定されたフォールバック メッシュ、または一連の従来の LOD を使用することが望ましい場合もあります。
このようなレベルで制御が可能なことで、Nanite をプロジェクトだけでなく、レイトレースされた反射に見られるジオメトリを直接制御する手段として、または Nanite をサポートしないプラットフォームに対して使用できます。
独自のカスタム フォールバック メッシュを指定したり、一連の LOD を使用したりするには、次の手順に従います。
- [Fallback Triangle Percent] を「0」に設定して、フォールバック メッシュを可能な限り小さくします。このアプローチを使用する場合、これが無視されるためです。
- この 従来の LOD 設定 方法を使って、メッシュに 1 つ以上の LOD を追加します。
- [LOD Settings (LOD 設定)] セクションで、[LOD Import (LOD インポート)] ドロップダウンを [Import LOD Level 1 (LOD レベル 1 のインポート)] に設定します。
- [LOD Settings] セクションの [Minimum LOD (最小 LOD)] を「1」に設定します。これにより、Nanite 生成のフォールバック メッシュが無視されます。
複雑なコリジョンは特殊なケースとして扱われます。コリジョンに使用する LOD を指定するには、[General Settings (一般設定)] の [LOD for Collision (コリジョン用の LOD)] を使用します。コリジョンには、LOD0 を含むあらゆる LOD を使用できます。
この特定のアプローチでは、Nanite プロジェクトに Nanite をサポートしないプラットフォームとの互換性を自動的に持たせることは不可能な場合があるため、プロジェクトでテストして評価する必要があります。
Nanite は大量のインスタンスを効率的に処理しますが、Nanite が無効な場合は、従来のレンダリング パイプラインのドローコール数が膨大になる可能性があります。この可能性についてプロジェクトでテストする際は、r.Nanite 0
を使って Nanite サポートのオン/オフを切り替えることができます。
詳細については、本ページの「コンソール変数とコマンド」セクションを参照してください。
Nanite が有効なコンテンツで作業する
ほとんどの場合、Nanite は画面の解像度で非常にうまくスケーリングされます。これは、2 つのテクノロジに基づいて実行できます。つまり、きめ細かい詳細度とオクルージョン カリングです。通常、これは、シーン内のソース データの幾何学的な複雑さに関係なく、Nanite が画面に描画しようとする三角ポリゴンの数は一定で、ピクセル数に比例することを意味します。
Nanite のデザイン哲学は、ピクセル数よりも多い数の三角ポリゴンを描画することは無駄であるというものです。
Nanite が使用するスケーリング技法が機能しないコンテンツもありますが、これは、Nanite をこのようなコンテンツに使用すべきではないことや、従来のパイプラインよりも高速にレンダリングされないことを意味するわけではなく、このようなタイプのコンテンツには、シーンの複雑さに基づくスケーリングではなく、ピクセルに基づくスケーリングが適用されないことを意味します。このような状況の発生を監視するには、Unreal Engine の プロファイリング 機能を使用してください。
集合ジオメトリ
集合ジオメトリとは、髪の毛、葉、草など、結合されていない多くの小さなオブジェクトが離れた場所では 1 つのボリュームにマージされるジオメトリを指します。このようなタイプのジオメトリでは、Nanite の LOD とオクルージョン カリングが機能しません。Nanite 自体が HLOD 構造であり、小さな三角ポリゴンを大きな三角ポリゴンに簡素化する機能に依存し、違いが小さくて認識できない場合はより粗いものを選択します。連続したサーフェス上では非常にうまく機能しますが、離れたところから見ると、ソリッド サーフェスと言うよりも部分的に不透明な雲のように見える集合ジオメトリではうまくいきません。したがって、Nanite では、集合ジオメトリを典型的なソリッド サーフェスと同じように積極的に削減できないと判断する可能性が高く、その結果、対象となる同じピクセル数に対してより多くの三角ポリゴンが描画されます。
集合ジオメトリで機能しない別の最適化手法として、オクルージョン カリングがあります。オクルージョン カリングは非常にきめ細かいものですが、その粒度はピクセル レベルに達していません。多数の穴を含むジオメトリ (さらに悪いことに、多数の穴を含むジオメトリのレイヤーのレイヤーなど) は、画面上のその領域によって背後にあるオブジェクトがブロックされる前に多くの深度レイヤーを構築する必要があるため、過度なオーバードローを引き起こします。たとえば、画面上に 8x8 ピクセルの領域があり、各ピクセルを塗りつぶすために複数の深度レイヤーを描画する必要があると考えることができます。この過度なオーバードローは、Nanite が同じサイズのピクセル領域に対してより多くの三角ポリゴンを描画しようとすることを意味し、レンダリング速度が低下します。
オクルージョン カリングの問題を引き起こすものの例としてはフォリッジが最もわかりやすいですが、フォリッジ系のメッシュに Nanite を使用してはいけないという意味ではありません。詳細については、以下の「Nanite を使用するフォリッジ」セクションを参照してください。さまざまなユース ケースを試し、プロジェクトに適した使用方法を確認してください。プロファイリング ツールを活用することで、これらのタイプのメッシュに対して Nanite を使用することのパフォーマンスを確認できます。
密に積み上げられたサーフェス
実際に使用する上でのさまざまな制限により、従来のメッシュのオクルージョン カリングでは、大規模なモデル構築 (キットバッシング) ワークフローを実装することはほとんど不可能です。Nanite のきめの細かいオクルージョン カリングの性質により、開発時にこのようなワークフローを使用する際の懸念を軽減できます。先述の「集合ジオメトリ」セクションで説明したように、オーバードローが発生する原因として、可視サーフェスがその下の隠れたサーフェスと非常に近いことが挙げられます。特定のジオメトリが可視サーフェスの下に適切に隠されている場合、それを検出してカリングするための Nanite のコストは非常に低く、オーバーヘッドも存在しないものと考えることができます。しかしながら、最も上のサーフェス付近でいくつかのジオメトリが互いに積み重なっている場合、Nanite ではどちらが上か下かを判断することができず、両方のジオメトリが同時に描画される原因となります。
カリングに関するこの特定の問題は、Nanite がどのサーフェスが最上層であるかを認識せず、すべてのレイヤーが描画されるという最悪なシナリオとなります。このような精度の誤差は、画面のサイズと距離によって異なるため、10 センチ メートル離れた場所ではレイヤーが分離され、サーフェス付近ではきれいに見えますが、距離が離れると距離の差が 1 ピクセルよりも小さくなり、オーバードローになります。


次の例では、キャラクターが立っている場所を見下ろすようにカメラが移動した際に、Nanite の オーバードロー ビジュアライゼーションによって、これらの積み重ねられたサーフェスがどのようにレンダリングされるかが示されます。明るい領域は、他の領域よりも多くのオーバードローが生じていることを示しています。

このオーバードロー ビジュアライゼーションは、オーバードローの問題を検出するための最良の方法です。ある程度のオーバードローが予想されますが、その量が多すぎると、Nanite のカリングとラスタライズのコストが高くなり、シーンの複雑さにかかわらず、プロセスにおける Nanite のスケーリングの効果が低下します。
ファセット法線とハードエッジ法線
留意すべき問題として、ファセット法線を含む高精細のメッシュをインポートする際には、2 つのポリゴン間にある法線が平滑化されていないという点があります。これは一般的な問題ですが見落としやすく、メッシュで少量の頂点を共有すると、レンダリング パフォーマンスとデータ サイズの両方のコストが大幅に高くなるため、この特定の問題に注意する必要があります。メッシュの頂点の数を、それに含まれる三角ポリゴンの数よりも少なくすることが理想的です。この比率が 2:1 以上の場合、特に結果として三角ポリゴンの数が多くなる場合は、問題が発生する可能性が高くなります。比率が 3:1 になるとメッシュは完全にファセットとなります。この場合、各三角ポリゴンには 3 つの個別の頂点が含まれますが、どの頂点も他の三角ポリゴンとは共有されません。ほとんどの場合、法線が平滑化されないため、これらが同じにならないことが原因です。
これを念頭に、より多くの頂点によって格納するデータが増えることに留意してください。また、これはより多くの頂点変換作業を意味し、2:1 よりも高い比率では遅いレンダリング パスになります。ハード サーフェス モデリングでの意図的な使用には問題はなく、使用しない理由もありません。ただし、100% ファセットの密集したメッシュは、予想よりもはるかにコストが高くなります。また、別の注意点として、他の DCC パッケージで生成された密度の高い有機タイプのサーフェス上にインポートされた法線は、低いポリゴン メッシュで認識される可能性のあるハード法線しきい値を備えていますが、これによって Nanite で不要なコストが発生する可能性があります。
たとえば、下の 2 つのメッシュでは、左のものにはファセット法線があり、右のものには平滑化された法線があります。Nanite の トライアングル ビジュアライゼーションを使ってこれらを比較すると、Nanite によって描画に使用される三角ポリゴンの数に大きな違いがあることがわかります。左のファセット法線には、右の平滑化された法線よりもはるかに多い数の三角ポリゴンが描画されています。
ファセット法線を含む Nanite 有効なメッシュ (左) と、平滑化された法線を含む Nanite 有効なメッシュ (右) | ファセット法線を含む Nanite 有効なメッシュの Nanite トライアングル ビジュアライゼーション (左) と、平滑化された法線を含む Nanite 有効なメッシュの Nanite トライアングル ビジュアライゼーション (右) |
クリックしてフルサイズ表示。 | クリックしてフルサイズ表示。 |
Nanite を使用するフォリッジ
Nanite を使用するフォリッジは、ベータとしてみなされており、積極的な研究および開発を行っています。このセクションでは、Unreal Engine 5.1 の Nanite でフォリッジを活用するためのいくつかのガイダンスを提供します。
デフォルトの Nanite 設定を使用した木々などのアセットでは、林冠が距離とともに薄くなって見える場合があります。こうしたケースは、集合ジオメトリ に特有の形式であり、切り離されたそれぞれの部分 (葉や草) で境界が開放エッジになっています。Nanite が有効な場合にこのように薄くなるのを防ぐには、[Preserve Area (エリアを保持)] の有効化が役立ちます。三角ポリゴンを減らすことで Nanite によって遠方のジオメトリが簡素化される場合、最終的にはこれらの切り離された要素のいくつかを完全に削除する必要があります。Nanite の詳細な情報がない場合、大きなサーフェス領域の損失があるため、結果として薄くなって見えます。[Preserve Area (エリアを保持)] は、開放境界エッジを拡張し、その失われた領域を残りのトライアングルに再分配できるようにします。葉などの対称的な形状を拡張すると、スケール アップと同じ効果があります。草の葉など、非対称のリボンの場合は、厚みが増すという効果があります。
[Preserve Area] はすべてのフォリッジ メッシュに推奨されるものですが、フォリッジではないメッシュには推奨されません。
![[Preserve Area] が無効](nanite-preservearea-disabled.png)
![[Preserve Area] が有効](nanite-preservearea-enabled.png)
Nanite クラスタ ビジュアライゼーションでは、失われた領域が [Preserve Area] によって再分配される方法をよりわかりやすく確認できます。
![Nanite クラスタ ビジュアライゼーション | [Preserve Area] が無効](nanite-preservearea-disabled-clustervis.png)
![Nanite クラスタ ビジュアライゼーション | [Preserve Area] が有効](nanite-preservearea-enabled-clustervis.png)
Nanite での使用を想定し、フォリッジ アセットを使用およびオーサリングする場合の推奨事項を以下に説明します。これは、現在も実験中の取り組みであり、最適なアプローチを調査しています。ここまでで、Nanite を使用するフォリッジは以前とは異なる方法でオーサリングしなければならないことを確認しましたが、その強みを活用すると、Nanite を利用してより高速かつ高品質な結果を得ることができます。
- [Preserve Area] (スタティックメッシュ エディタで有効にする) を使用します。
- マスク付カードではなく、ジオメトリを使用します。
- マスク付マテリアルは、不透明型マテリアルと比べて負荷がかなり大きくなります。これらをまったく使用しないようにすると、最も高速な結果が得やすくなります。
- Nanite を使用した従来のカード アプローチ (多数の要素が単一のカードで表現される) は、Nanite を使用しない場合よりも低速になる場合があります。カードベースのフォリッジで Nanite を有効にすることが、常にパフォーマンス改善になると期待しないでください。
- マスクされたピクセルの負荷は、描画されるピクセル数のものとほぼ同等になります。
- ジオメトリ フォリッジは、カード アプローチ (Nanite を使用したカードと Nanite を使用しないカードの両方) よりも、Nanite を使用するとより高速になることが判明しています。また、表示も向上します。
- Megascans:草 パックには、テストのための優れた例が用意されています。このパックには、マスクされたジオメトリと高ポリゴンのジオメトリが用意されており、各要素は独立していて、マスクされた低ポリゴンのカード (多くの要素が単一のカードで表現される) になっています。
- ワールド位置オフセット (WPO) を使用すると、より多くの頂点の負荷が高くなります。WPO ロジックは制限し、監視する必要があります。
- このページの「集合ジオメトリ」セクションで説明した問題は、引き続き該当します。密度が高い森 (上の例のようなもの) では、すべてのメッシュを同じ三角ポリゴン数のソリッド形状で置き換えた同じシーンよりもレンダリングがはるかに低速になります。
Max World Position Offset Displacement (ワールド位置オフセットの最大ディスプレースメント) を Nanite で使用する
マテリアルとマテリアル インスタンスでは、Max World Position Offset Displacement 設定を使用して、WPO が持ちうるオフセット量の上限を設定することができます。この設定は、Nanite メッシュが小さなクラスタに分割されて、そのクラスタが個々の境界を持ち、GPU 上で個別にカリングされるので Nanite メッシュには特に便利です。WPO のクランプは、これを管理する優れた方法です。
Max World Position Offset Displacement 設定は、マテリアルの [Details] > [World Position Offset (ワールド位置オフセット)] カテゴリ、またはマテリアル インスタンスの [Material Property Overrides (マテリアル プロパティのオーバーライド)] の中にあります。

詳細については、「マテリアルのプロパティ」を参照してください。
Nanite スタティック ディスプレイスメント マッピング
これは実験段階の機能です。
スタティックメッシュ エディタには、オフラインのアダプティブ テッセレータによって Nanite を有効にしたメッシュにディテールを追加するオプションがあります。テッセレータはディスプレイスメント マップをベイクすることで最適化された Nanite メッシュを生成します。テクスチャ主導型のこのアプローチは非破壊的であり、テッセレーションやディスプレイスメントの量をスカラー パラメータで制御することができます。

[Details (詳細)] パネルの [Nanite Settings (Nanite 設定)] で以下の操作を行います。
- [Trim Relative Error (相対誤差をトリミング)] を 0 以外の値に設定して、テッセレーション量を制御します。
- デフォルトは 0.04 が適切ですが、0.02 より上に保つ必要があります。これは、メッシュにテッセレーションを行う時のエラー レベルの目標値です。値が低すぎると、単純に三角ポリゴンを多数使用することになり、ビルド時間が長くなります。
- [Displacement Maps (ディスプレイスメント マップ)] を追加します。
- [Index (インデックス)] 要素を展開し、ディスプレイスメントに使用する テクスチャ を追加します。
- メッシュに複数のマテリアル スロットがある場合、それぞれのディスプレイスメント マップ インデックスは対応するマテリアル スロットにマッピングされます。たとえば、マテリアル スロット 0 は Displacement Maps Index 0、マテリアル スロット 1 は Index 1 というようにマップします。
- マグニチュード を設定してディスプレイスメント量を制御します。
- [Apply Changes (変更を適用)] をクリックします。
Nanite 以外のコンテンツと Nanite コンテンツのハイブリッド ワークフロー
次のセクションでは、Nanite を有効にしたプロジェクトで Nanite 以外の機能やプラットフォームもサポートする必要がある場合に、アセットを複製することなく利用できるワークフローを取り上げます。
Nanite 用に高解像度メッシュをインポートする
コンテンツ ブラウザ または スタティックメッシュ エディタ を使用して高解像度メッシュをインポートし、既存の Nanite 以外のスタティックメッシュを対象として Nanite 表現にすることができます。
コンテンツ ブラウザ から、スタティックメッシュ アセットで右クリックのコンテキスト メニューを使用し、[Level of Detail (詳細度)] > [High Res (高解像度)] > [Import High Res (高解像度をインポート)] を選択し、インポートするファイルに移動します。

または、スタティックメッシュ エディタ を使用し、[Details] パネルの [Nanite] 設定から高解像度メッシュをインポートします。[Import (インポート)] をクリックし、インポートするファイルに移動します。

このワークフローを使用すると、インポート プロセスで Nanite ジオメトリからフォールバック メッシュが自動的に生成されるのではなく、既存のスタティックメッシュと詳細度 (LOD) チェーンが フォールバック メッシュ になります。
このワークフローは、シーン内のスタティックメッシュ アクタで [Disallow Nanite (Nanite を禁止)] 設定を優先します。また、その詳細については、以下の「スタティックメッシュ コンポーネント オプション」セクションで説明しています。
マテリアル ワークフロー
マテリアルを使用する、Nanite 以外のワークフローと Nanite のワークフローを改善できる方法は 2 つあります。マテリアル グラフ内のノードを使用してロジック パスを分割する方法か、または Nanite を使用したレンダリングのみにオーバーライド マテリアルを使用する方法です。
Nanite Pass Switch ノード
Nanite Pass Switch ノードを使用すると、Nanite でレンダリングを行う場合に、マテリアル グラフ内の特殊な動作を定義できます。

Nanite を使用しないパスにレンダリングを行う場合は、デフォルト の入力を使用し、通常どおりにマテリアルが処理されるようにします。Nanite の入力は、簡素化するマテリアル ロジックまたは Nanite パスに対して特殊なレンダリングを行うマテリアル ロジックに使用します。たとえば、Nanite によってサポートされない機能がマテリアルで使用されている場合、同じロジックをデフォルトの入力では維持し、Nanite の入力ではより適合するロジックを使用できます。
Nanite Override Material
マテリアルとマテリアル インスタンスに「Nanite Override Material」スロットが追加されています。オーバーライド マテリアルを設定した場合、マテリアルまたはマテリアル インスタンスが割り当てられた Nanite が有効なメッシュは、参照されている Nanite オーバーライド マテリアルを代わりに使用します。これはつまり、Nanite Pass Switch ノードを使用してマテリアル グラフ内から直接ロジックを管理するのではなく、Nanite ワークフローに特定のマテリアルを作成できるということです。

このマテリアル インスタンスでは、Nanite Override Material スロットが強制的にデフォルトで None になるため、親マテリアルでのオーバーライドが設定されていても、そのマテリアルの子インスタンスに自動的に継承されることはありません。
以下の例では、像のスタティックメッシュ アセットで Nanite が有効になっており、マテリアル インスタンスが適用されています。マテリアル インスタンスには、デモンストレーションを目的としていくつかの単純な色の変化を伴う Nanite Override Material が設定されています。メッシュは Nanite でレンダリングされるため、左側のスタティックメッシュ アクタには、Nanite Override Material が表示されています。[Disallow Nanite] がアクタに設定されていない限り、右側のスタティックメッシュ アクタには同じマテリアルが表示され、Nanite Override Material ではマテリアル インスタンスの Nanite を使用しないベース マテリアルの表示が無効になります。
スタティックメッシュ コンポーネント オプション:Disallow Nanite
Nanite が有効なスタティックメッシュで Nanite 表現を使用する必要がある場合には、[Disallow Nanite] 設定を使用して、個々のシーンのアクタに設定を行うことができます。これはつまり、同じスタティックメッシュ アセットを使用する Nanite のアクタと Nanite でないアクタを混在させて使用できるということになります。

以下の例では、単一の Nanite が有効なスタティックメッシュ アセットを示します。ここで、左側は Nanite のメッシュ表現であり、右側は [Disallow Nanite] を有効にしたものです。

ランドスケープ テレイン
ランドスケープ アクタで Nanite を有効にできます。Nanite ランドスケープ メッシュは、エディタ内のユーザーのワークフローを妨げないように、バックグラウンドで再ビルドされます。Nanite ランドスケープはランドスケープの解像度を改善していませんが、ユーザーは GPU カリング、自動ジオメトリ ストリーミング、LOD などの Nanite ランタイム機能を利用できます。これにより、特に VSM などの機能が必要な場合に、ランタイム パフォーマンスが向上します。
ランドスケープで Nanite を有効にして使用する方法の詳細については、「ランドスケープで Nanite を使用する」のドキュメントを参照してください。
一般的なコンテンツのパフォーマンス
比較のために、PS5 の Unreal Engine 5 テクニカル デモ「Lumen in the Land of Nanite」を例にとって、次の GPU 時間を記録します。
- 平均レンダリング解像度は 1400p、タイミングは 4K にアップサンプリング
- Nanite メッシュをカリングしてラスタライズする時間は約 2.5 ミリ秒 (デモのほとんどすべてのメッシュは Nanite メッシュ)
- ジオメトリはほぼすべて Nanite メッシュ
- シーンは完全に GPU によって駆動されるため、CPU オーバーヘッドはほとんどなし
- すべての Nanite メッシュ素材の計算時間は約 2 ミリ秒
- シーン内のマテリアルごとに 1 回のドローコールのみであるため、CPU コストは低い
GPU で費やされるこれらの時間は、Unreal Engine 4 の深度プリパスとベース パスの合計に相当するものを合計すると、約 4.5 ミリ秒になります。これにより、Nanite が 60 FPS をターゲットとするゲーム プロジェクトに適していることがわかります。
これらの数値は、本ページで説明してきたパフォーマンス上の欠点がないコンテンツを想定したものです。多数のインスタンスと多数の固有なマテリアルもコストの増加につながります。Nanite の開発においては、この点に対処すべく積極的な作業が行われています。
データ サイズ
Nanite では微細な詳細を実現できるため、これが幾何学的データの大幅な増加につながり、プレイヤーによるダウンロードの数とゲーム パッケージ サイズが増加すると思われるかもしれませんが、現実はそれほど恐ろしいものではありません。実際、Nanite の特殊なメッシュ エンコーディングにより、Nanite のメッシュ形式は標準的なスタティックメッシュ形式よりもはるかに小さくなります。
Unreal Engine 5 のサンプル プロジェクト『古代の谷』を例に挙げると、Nanite メッシュの入力三角ポリゴンはそれぞれ平均で 14.4 バイトを消費します。これは、100 万個の三角ポリゴンを含む平均的な Nanite メッシュには、およそ 13.8 メガバイト (MB) のディスク容量が必要であることを意味します。
従来のローポリ メッシュ (法線マップを使用) をハイポリ Nanite メッシュと比較すると、次の効果が見られます。
ロー ポリゴン メッシュ
スタティックメッシュ圧縮パッケージのサイズ:1.34MB |
Nanite メッシュ
スタティックメッシュ圧縮パッケージのサイズ:19.64MB |


圧縮パッケージのサイズはアセットのフル サイズではありません。このメッシュのみで使用される固有のテクスチャもいくつかあるので、これらもカウントする必要があります。 メッシュで使用される多くのマテリアルには、さまざまな法線、ベース カラー、メタル、スペキュラ、ラフネス、マスク テクスチャで構成された独自のテクスチャが含まれています。
この特定のアセットは 2 つのテクスチャ (ベース カラーと法線) のみを使用するため、固有のテクスチャが多数含まれる他のアセットほどディスク容量を消費しません。たとえば、約 150 万個の三角ポリゴンを含む Nanite メッシュのサイズは 19.64MB となり、4k の法線マップ テクスチャのサイズよりも小さいことに留意してください。
テクスチャ タイプ | テクスチャ サイズ | ディスク上のサイズ |
---|---|---|
BaseColor | 4k x 4k | 8.2MB |
法線 | 4k x 4k | 21.85MB |
このメッシュの圧縮パッケージ サイズとテクスチャの合計は次のとおりです。
- ローポリ メッシュ:31.04MB
- ハイポリ メッシュ:49.69MB
Nanite メッシュはすでに十分詳細であるため、その固有の法線マップを (他のアセットと共有されている) タイル化された詳細法線マップに置き換えることができます。この場合は品質が多少低下しますが、その損失は非常に小さく、ローポリとハイポリ メッシュの品質差よりもはるかに小さいことは確かです。したがって、4k の法線マップを使用したローポリ メッシュと比較すると、150 万個の三角ポリゴンで構成される Nanite メッシュは、サイズがより小さいながらも見かけがよりきれいになります。
Nanite が有効なメッシュとそのテクスチャの圧縮パッケージ サイズの合計:27.83MB


テクスチャの解像度と詳細な法線マップで実施できる実験はたくさんありますが、この比較が示しているのは、Nanite メッシュのデータ サイズは、アーティストが見慣れているデータとあまり変わらないということです。
最後に、ハイポリを使って Nanite 圧縮を標準的なスタティックメッシュ形式と比較できます。LOD0 ではどちらも同じです。
ハイポリ スタティックメッシュ
スタティックメッシュ圧縮パッケージのサイズ:148.95MB |
Nanite メッシュ
スタティックメッシュ圧縮パッケージのサイズ:19.64MB |
先述の Nanite 圧縮と比較すると、そのサイズは 19.64MB であり、4 つの LOD を持つ標準的なスタティックメッシュの圧縮の 7.6 分の 1 です。
Nanite 圧縮とデータ サイズは、Unreal Engine の将来のリリースで改善予定の重要な要素です。
データ サイズに関する全般的な推奨事項
Nanite と 仮想テクスチャリング システムを高速 SSD と組み合わせて使用することで、ジオメトリとテクスチャのランタイム割り当てに関する問題を軽減できます。その上で、最大のボトルネックはこのデータを顧客に提供する方法です。
ディスク上のデータ サイズは、コンテンツの配信方法、たとえば物理的なメディア経由なのか、インターネット経由でダウンロードさせるのか (ただし圧縮技術には限界があります) などを検討する際の重要な要素です。平均的なエンド ユーザーのインターネット帯域幅、光学メディアの容量、およびハード ドライブの容量は、ハード ドライブの帯域幅やアクセス レイテンシー、GPU のコンピューティング パワー、Nanite などのソフトウェア テクノロジーに対応できるほどには進歩していないことがデータをユーザーに配信することを困難にしています。
Nanite にとって、高精細メッシュのレンダリングは大きな問題ではありません。しかし、Unreal Engine 5 早期アクセス版に関する限り、ハード ドライブにデータを保存する方法はまだ改善が必要な領域です。
ビジュアライゼーション モード
Nanite は、進行中のシーン内でデータを検査するためのビジュアライゼーション モードを多数備えています。
レベル ビューポートの [View Modes (表示モード)] ドロップダウンから [Nanite Visualization (Nanite ビジュアライゼーション)] にカーソルを合わせて、目的のモードを選択します。

[Overview (概要)] ビジュアライゼーションを選択すると、レンダリングされたシーンが画像の中央に、選択した Nanite ビジュアライゼーションが参照用に画面の周囲に表示されます。

次の Nanite ビジュアライゼーション モードから選択できます。
Nanite ビジュアライゼーション | 説明 |
---|---|
Mask | Nanite ジオメトリを緑色で、非 Nanite ジオメトリを赤色でマーキングします。 |
Triangles | 現在のシーン内にある Nanite メッシュのすべての三角ポリゴンを表示します。 |
Clusters | 現在のシーン ビューにレンダリングされているすべての三角ポリゴン グループを色付きで表示します。 |
Primitives | インスタンス スタティックメッシュ (ISM) のすべてのインスタンスについて、コンポーネントをすべて同じ色で色付けします。 |
Instances | シーン内のインスタンスをそれぞれ異なる色でペイントします。 |
Overdraw | シーンのジオメトリで発生しているオーバードローの数を表示します。マスキングされたピクセルを含む評価されたすべてのピクセルは、オーバードロー ビューに追加されます。密に積み上げられた小さいオブジェクトは、大きなオブジェクトよりもオーバードローを発生させます。 |
Material ID | 各 Nanite メッシュのマテリアル ID をそれぞれ色分けして表示します。 |
Lightmap UV | Nanite メッシュ サーフェスの UV 座標を表示します。 |
Evaluate WPO | Nanite が有効なジオメトリを、ワールド位置オフセットを使用するもの (緑色) と使用しないもの (赤色) に色分けします。 |
Nanite には、[Nanite Visualization] メニューで追加のビジュアライゼーション モードを有効にする 高度な ビジュアライゼーション モードがあります。これらの追加のビジュアライゼーションは、プログラマーが Nanite のさまざまな基礎となるコンテンツをデバッグまたは分析する際に役立ちます。
この高度なビジュアライゼーション モードを有効にするには、r.Nanite.Visualize.Advanced 1
コンソール変数を使用します。
コンソール変数とコマンド
Nanite のデバッグおよび設定時には、次の統計情報とコンソール変数を使用できます。
ランタイム時には、r.Nanite 0
コンソール変数を使用して、Nanite レンダリングをグローバルに有効または無効にすることができます。Nanite を無効にすると、Nanite をサポートしていないプラットフォームをエミュレートできます。
Nanite フォールバック レンダリング モード
Nanite が無効になっているか、プラットフォームでサポートされていない場合、Nanite ではフォールバック メッシュ レンダリング モードを提供します。r.Nanite.ProxyRenderMode
コンソール変数を介して、使用するモードを制御できます。
- 0 はデフォルト モードで、フォールバック メッシュのレンダリングにフォールバックします。または、設定されている場合はスクリーン空間駆動の LOD にフォールバックします。これは、スタティックメッシュ エディタのプロパティで設定されている 最小 LOD も認識します (先述の「フォールバック メッシュ」セクションを参照)。
- 1 では、Nanite が有効なメッシュのすべてのレンダリングが無効になります。
- 2 はモード 1 と同様に機能しますが、スタティックメッシュ エディタの [Show] > [Nanite Fallback] から Nanite フォールバックをレンダリングできます。
Nanite なしでサポート可能な数よりもはるかに多くのインスタンスが含まれるシーンについては、フォールバック レンダリング モード 1 と 2 の両方が役立ちます。これらのモードでは、Nanite をサポートしないプラットフォーム上でシーンをエディタで開けるようになります。
たとえば、Unreal Engine 5 のサンプル プロジェクト『古代の谷』では、Nanite を無効にすると数万回の定期的なドローコールが発生し、Nanite をサポートしていないプラットフォームでマップを開くことが困難になります。
Nanite 統計コマンド
Nanitestats コマンドを使用すると、Nanite のカリング統計情報がビューポートの右上に表示されます。
Nanite によって画面に表示される統計情報を指定するには、コマンド引数を使用します。引数を指定しない場合はプライマリ ビューが使用されます。
Nanitestats List
を使用すると、利用可能なすべてのビューがデバッグ出力に表示されます。
- プライマリ
- VirtualShadowMaps
利用可能な場合は、ShadowAtlas
と CubemapShadows
に利用できる他の統計情報も表示される場合があります。このコマンドに続けて表示したい統計情報リストの名前を入力し、ビューを選択します。たとえば、「NaniteStats VirtualShadowMaps
」と入力します。
2 パス オクルージョン カリングを使用するビューの場合、統計情報は Main と Post パスに分割されます。
Nanite ストリーミング プールのサイズを制御する
r.Nanite.Streaming.StreamingPoolSize
コンソール変数を使用して、Nanite ストリーミング データの保存に使用するメモリ量を指定できます。メモリ プールを大きく設定すると、シーン内を移動するときの IO と圧縮解除のワークロードが軽減されますが、メモリ使用量は増加します。
メモリ プールがビューに必要なすべてのデータを収容するのに十分な大きさでない場合は、「キャッシュ スラッシュ」が発生する可能性があります。この場合、静的ビューであってもストリーミングが不安定のままとなります。
このコンソール変数はランタイム時には変更できず、コンフィグ ファイル (.ini) で指定する必要があります。
Nanite ストリーミング データを可視化するには、ストリーミング ジオメトリ表示フラグ ([Show (表示)] > [Nanite] > [Streaming Geometry (ストリーミング ジオメトリ)]) を使用します。無効にすると、Nanite メッシュは、メモリに常に存在している品質レベルでのみレンダリングされます。
単一パスの最大クラスタ数を設定する
r.Nanite.MaxCandidateClusters
と r.Nanite.MaxVisibleClusters
コンソール変数を使用すると、単一パスで使用される候補クラスタと可視クラスタの最大数をそれぞれ指定できます。それらの値は中間バッファのサイズ設定に使用されます。また、それらのデフォルト値には、一般的なレンダリング シナリオで機能する値が指定されています。
これらのバッファのいずれかを動的にサイズ変更したり、オーバーフロー時に品質を自動的に低下させたりするためのメカニズムは存在しないため、これらからのアーティファクトのレンダリングがシーンの複雑さに対応できないほど小さくなり、通常はジオメトリの欠落またはちらつきとして現れます。このようなアーティファクトが発生する場合は、Nanitestats
を使って候補クラスタと可視クラスタの安全な値を判断します。具体的には、ClustersSW と ClustersHW の統計情報を参照してください。現在、候補クラスタのメモリ コストは 12 バイトで、可視クラスタは 16 バイトです。
このコンソール変数はランタイム時には変更できず、コンフィグ ファイル (.ini) で指定する必要があります。