ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
この記事の要点
- Nanite は「仮想化ジオメトリ」と呼ばれる仕組みで、非常に高密度なメッシュでも描画コストが三角形の総数ではなく画面に映る量にほぼ比例するようにする機能です。
- 利用には DirectX 12 とシェーダーモデル 6(SM6)に対応した環境が必要で、プロジェクト設定側とアセット側の両方で準備が要ります。
- 有効化の経路はインポート時・コンテンツブラウザの右クリック・スタティックメッシュエディタの3通りで、いずれもメッシュ単位の設定です。
- 有効になったかどうかは思い込みで判断せず、メッシュエディタの情報表示とビューポートの Nanite 可視化モードで必ず確認します。
- Nanite が軽くするのはあくまでジオメトリ処理です。マテリアルやライティングの負荷は別問題として最適化する必要があります。
1Nanite とは何か
Nanite は Unreal Engine 5 (UE5) で導入された、スタティックメッシュ向けの仮想化ジオメトリシステムです。従来のリアルタイム描画では、モデルの三角形数がそのまま描画負荷に直結するため、制作者は「見た目を保ちつつポリゴン数をどこまで削るか」という調整に多くの時間を使ってきました。Nanite はこの前提を変え、モデルが持つジオメトリのうち「その瞬間に画面上で意味のある細かさ」だけを取り出して描画します。
イメージとしては、テクスチャのミップマップやストリーミングに近い考え方です。テクスチャでは 4K の画像を持っていても、画面上で小さく映っているなら低解像度のミップだけを読み込んで使います。Nanite はこれをジオメトリに対して行います。数千万三角形のスキャンデータを配置しても、カメラから遠い部分については粗い表現だけが使われ、近づいた部分だけが詳細に描かれます。結果として、描画コストは「メッシュが持っている三角形の総数」ではなく「画面に映っているピクセルの量」に強く依存する形へ近づきます。
この性質があるため、Nanite は写真測量(フォトグラメトリ)で取り込んだ岩や壁、CAD 由来の細かい部品、キットバッシュ的に大量配置する建材といった、高密度で数の多いメッシュと特に相性が良い機能です。
2仕組みの要点をつかむ
細部の実装はバージョンごとに改良が続いていますが、押さえておくべき考え方は次の3点です。
クラスタ単位の分割:Nanite を有効にしたメッシュは、インポートやビルドの段階で小さな三角形のかたまり(クラスタ)へ分割され、それを段階的にまとめた階層構造が事前に作られます。実行時にはこの階層のどの段階を使うかがクラスタごとに選ばれるため、1つのメッシュの中でも手前は細かく、奥は粗く、といった表現が同時に成立します。
GPU 主導の選別:どのクラスタを描くかの判定は主に GPU 側で行われます。CPU が個々のオブジェクトごとに描画命令を積む従来型の流れに比べ、大量のオブジェクトを配置したときの CPU 負荷が上がりにくいのが利点です。
可視性バッファ方式のラスタライズ:Nanite はいったん「どのピクセルにどのクラスタのどの三角形が見えているか」という情報を書き出し、その後にマテリアル評価を行います。これにより、隠れて見えなくなる部分の無駄なシェーディングを抑えられます。また、1ピクセルより小さくなるような微細な三角形については、通常のハードウェアラスタライザではなくコンピュートシェーダによる専用処理が使われます。ハードウェアのラスタライザは微小三角形が大量にあると効率が落ちるためで、これが「高密度メッシュでも破綻しない」理由のひとつになっています。
3Nanite を使うための前提条件
Nanite は「チェックを入れれば必ず動く」機能ではなく、実行環境の要件があります。まずここを満たしているかを確認してください。
| 条件 | 内容 |
|---|---|
| グラフィックス API | Windows では DirectX 12 が前提。Linux では Vulkan の SM6 対応が前提となる |
| シェーダーモデル | シェーダーモデル 6(SM6)が必要。プロジェクトのターゲット設定に SM6 を含める必要がある |
| GPU | DX12 / SM6 世代の機能に対応した GPU が必要。とくに 64bit のアトミック演算に対応していることが求められる |
| レンダラ | デファードシェーディングを前提とした機能。モバイル向けやフォワード系の構成での対応状況はバージョンやプラットフォームにより異なる |
| アセット種別 | 基本はスタティックメッシュ。それ以外のアセットの対応状況はバージョンにより異なる |
要件を満たさない環境では、Nanite を有効にしたメッシュは自動生成された「フォールバックメッシュ」(従来型の低ポリゴン版)で描画されます。つまりエディタ上では正しく見えているのに、想定していた精細さが出ていない、という状況が起こり得ます。
4プロジェクト側の設定手順
- プロジェクト設定を開き、プラットフォーム(Windows)の項目から既定の RHI を確認します。DirectX 12 になっていない場合は DirectX 12 に変更します。
- 同じ画面にあるシェーダーフォーマットの指定で、SM6 が対象に含まれているかを確認し、含まれていなければ追加します。
- 設定を変更したらエディタの再起動を求められます。再起動後はシェーダーの再コンパイルが走り、規模によってはかなり待たされます。時間がかかりすぎる場合はシェーダコンパイルに長時間待たされる問題とその解決策も併せて確認してください。
- 影の表現を Nanite の精細さに見合ったものにするため、仮想シャドウマップの利用も検討します。Nanite と組み合わせる前提で設計されている機能なので、ライティング設計とセットで考えるのが実務的です。
なお、メニュー項目の名称や配置はバージョンによって変わることがあります。見つからない場合は設定画面の検索ボックスで「Nanite」「Shader Format」「RHI」などのキーワードを入力して探すのが早道です。
5メッシュを Nanite 化する3つの方法
プロジェクト側の準備ができたら、次はメッシュ単位で有効化します。経路は3つあります。
- インポート時に指定する:FBX などをインポートする際のオプション画面に Nanite に関する設定項目があります。ここで有効にしておけば、インポート直後から Nanite 対応のメッシュとして扱われます。大量のアセットを新規に取り込むときはこの方法が最も手間がかかりません。
- コンテンツブラウザから一括で切り替える:既にプロジェクトに入っているスタティックメッシュを選択し、右クリックメニューの Nanite 関連の項目から有効化します。複数選択した状態で実行すれば、まとめて切り替えられます。既存プロジェクトへ後から導入する場合の主力になる方法です。
- スタティックメッシュエディタで個別に設定する:メッシュをダブルクリックして開き、詳細パネルの Nanite 設定にあるサポート有効化のチェックを入れ、変更を適用します。この画面ではフォールバックメッシュの精度など、細かいパラメータも同時に調整できます。1つのメッシュだけ挙動を詰めたいときに使います。
いずれの方法でも、有効化した時点でメッシュのビルド処理が走り、Nanite 用のデータとフォールバック用のデータが生成されます。数が多いと時間がかかるので、大量に一括変換する場合は作業時間に余裕を持たせてください。
6本当に有効になっているかを確認する
設定したつもりで効いていない、というのは最もよくあるつまずきです。次の方法で客観的に確認します。
| 確認方法 | 見るポイント |
|---|---|
| スタティックメッシュエディタの情報表示 | Nanite が有効かどうかと、Nanite 用の三角形数が表示される。ここが無効のままなら適用に失敗している |
| ビューポートの可視化モード | 表示メニューにある Nanite の可視化から、三角形やクラスタの分布を色分けして表示できる。Nanite で描かれていない部分は色が付かない |
| コンソール変数で切り替えて比較 | Nanite の有効・無効を切り替えて見た目と負荷を比べると、実際に効いているかが判断しやすい |
| 統計・プロファイラ | 描画時間の内訳を確認し、ジオメトリ処理の比重が期待どおり下がっているかを見る |
# Nanite 全体をオフにして比較する(1 で戻す)
r.Nanite 0
# 描画統計を表示して負荷の内訳を見る
stat unit
stat rhi
可視化モードで色が付かないメッシュがある場合、そのメッシュだけ Nanite 化に失敗しているか、Nanite が適用できない条件に当てはまっています。個別の原因については、条件と対処を扱った記事を参照してください。
7向いているケース・注意が必要なケース
フォトグラメトリの岩や地形パーツ、CAD 由来の高密度な部品、建材や小物を大量に敷き詰める背景、LOD 作成に時間を割きたくない量産アセット。三角形が多く、静止した剛体で、同じものを何度も配置する用途ほど恩恵が大きくなります。
もともと低ポリゴンのメッシュ、半透明表現を多用するアセット、変形するオブジェクト。Nanite には固定的な処理コストがあるため、軽いメッシュに一律で適用しても効果が薄く、条件によってはかえって不利になります。
8導入時に押さえておきたい注意点
Nanite はジオメトリの問題しか解決しない:画面を覆うピクセルに対するマテリアル評価やライティングの負荷は Nanite では下がりません。複雑なマテリアルを大量に使えば、三角形数を減らしても重いままです。Nanite 導入後に思ったほど速くならない場合、ボトルネックがジオメトリではなかったという可能性を先に疑ってください。
ディスク容量とメモリ:Nanite 用のデータ構造は元のメッシュに加えて保持されるため、アセットの容量は増える傾向があります。極端に多数の高密度アセットを扱う場合は、パッケージサイズやストリーミングの設計も併せて検討が必要です。
コリジョンは別管理:物理的な当たり判定は Nanite の詳細ジオメトリではなく、従来どおりのコリジョン設定やフォールバック側の形状に基づいて処理されます。見た目が精細になったからといって当たり判定も精細になるわけではない、という点は設計時に意識しておきましょう。
大規模マップとの組み合わせ:広大なレベルでは World Partition によるロード管理や HLOD の運用と組み合わせることになります。Nanite は個々のメッシュの表示コストを抑えますが、遠景に大量のアクタが存在すること自体のコストは別途管理が必要です。Nanite を入れたから HLOD が不要になる、という単純な話ではありません。
まずは小さなテストレベルを作り、代表的なアセットを Nanite 化して負荷を計測するところから始めるのが安全です。効果が確認できてから本番アセットへ広げていけば、後戻りの少ない導入ができます。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- Nanite とは?有効化の手順と対応条件
- Nanite が使えない・効かないメッシュの条件と対処
- Nanite と LOD の違いと使い分け
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- UE5 の Lumen とは|リアルタイムGIの仕組みと有効化手順 NEW 2026-08-03 07:45:20
- UE5 の Lumen が暗い・反射しない|原因と確認ポイント NEW 2026-08-03 07:45:20
- UE5 のライトの種類と使い分け|Directional/Point/Spot/Rect NEW 2026-08-03 07:45:20
- UE5 の Nanite とは|有効化手順と対応条件を解説 NEW 2026-08-03 07:45:20
- UE5 の Nanite が効かない|原因と対処の切り分け NEW 2026-08-03 07:45:20
- UE5 の Nanite と LOD の違い|使い分けの指針 NEW 2026-08-03 07:45:20
- UE5 のマテリアルとマテリアルインスタンス|違いと使い分け NEW 2026-08-03 07:45:20
- UE5 のマテリアルノード|Lerp・Fresnel・Panner NEW 2026-08-03 07:45:20
- UE5 のマテリアルブレンドモード|Two Sided と選び方 NEW 2026-08-03 07:45:20
- UE5 の Enhanced Input 入門|IAとIMCの基本 NEW 2026-08-03 07:45:20
- UE5 の Enhanced Input 実装手順|BPでキー入力 NEW 2026-08-03 07:45:20
- UE5 の旧入力から Enhanced Input へ移行する手順 NEW 2026-08-03 07:45:20
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 2026-06-22 12:19:10
コメントを削除してもよろしいでしょうか?