岩場を作っていると、近くで見た岩の割れ目まで残したくなります。一方で、同じ岩を遠くへ置けば、その割れ目はほとんど見えません。どの距離でも同じ細かさで描くのは、もったいない使い方です。
Nanite(ナナイト) は、画面で必要になる細かさに合わせて、モデルの形状を自動で調整する仕組みです。高精細な岩や建物を使いやすくし、遠く用の簡略モデルを用意する手間も減らせます。
この記事では、岩を1つ有効化して仕組みを観察し、それから小さな岩場で見た目と負荷を比較します。「Naniteで描けているか」と「ゲームが軽くなったか」 を、順に確かめていきましょう。
この記事でわかること
- メッシュ・LOD・クラスタの意味と、Naniteの役割
- 1つのアセットでNaniteを有効にする手順
- 可視化モードで、描かれる形の細かさを観察する方法
- 同じ岩場で負荷を比べ、使いどころを判断する実践
Naniteは、描く形の細かさを選ぶ
メッシュ は、モデルの形を表す面の集まりです。UEでは基本的に三角形として描画されます。三角形が多く、細かな形を表せるモデルを ハイポリ(高ポリゴン) と呼びます。
例えば岩なら、大まかな丸い形だけのものより、割れ目や欠けまで形で作ったもののほうが、多くの三角形を使います。ただし、遠くから見れば、その違いは分からなくなります。
この見え方に合わせて細かさを変える考え方が LOD(Level of Detail) です。従来の方法では、高精細・中精細・低精細といった段階のメッシュを用意し、画面に映る大きさなどに応じて切り替えます。段階の作成には自動生成を使うこともあります。

Naniteでは、メッシュを クラスタ(三角形の小さなまとまり) に分け、まとまりごとに使う細かさを選びます。岩が画面を大きく占めるなら細かく、遠くで小さく見えるなら粗くする。モデル全体を数段階のLODへ丸ごと差し替える方法とは、調整する単位が違います。
基準になるのは、画面を構成する小さな点、ピクセル でどこまで形の違いを表せるかです。通常の表示では変化が目立ちにくいように調整されますが、「どんなモデルでも形の変化が絶対に見えない」という保証ではありません。
覚えておきたいのは、元のメッシュが持つ三角形の数と、その場面で描く三角形の数は同じではない ことです。Naniteは細部のデータを必要に応じて読み込むため、保存先にはSSDが推奨されます。
Naniteは、簡単なモデルへ細部を自動で彫り込む機能ではありません。元の岩が滑らかなら、有効化するだけで割れ目が増えるわけではありません。
まず1つの岩で有効にする
今回は Static Mesh を使います。岩や建物のように、骨のアニメーションを使わない形状のアセットです。「Static」という名前でも、配置した物体を移動・回転させることはできます。
まず、表面に凹凸のある岩を1つ用意しましょう。手持ちのモデルで構いません。素材を取り込むところから始める場合は、Fabの記事を参照してください。ここでは、Opaque(不透明)のマテリアルを使う岩 を選びます。
Windowsで試す場合は、Nanite対応のGPU(描画用の処理装置)とドライバー、DirectX 12・Shader Model 6を使う設定が前提です。古いプロジェクトでは設定が違う場合があるため、「Project Settings」のWindows・Rendering項目を確認します。Shader Modelは、GPUで使える描画機能の世代を表す設定です。
アセットを開いて、有効化する
- コンテンツブラウザで岩のStatic Meshを複製し、練習用に
SM_Rock_NaniteTestと名付ける。 - そのアセットをダブルクリックしてStatic Mesh Editorを開く。
- 詳細パネルの「Nanite Settings」で「Enable Nanite Support」をオンにする。
- 「Apply Changes」で適用し、処理が終わったら保存する。
- 練習用のレベルへ、そのアセットをドラッグして1つ置く。
まず、岩が元の色と形で表示されることを確かめます。後半では可視化モードへ切り替え、Naniteが使われているかも確認します。
変更するのは、レベルへ置いた岩のActorではなく、元になるメッシュのアセットです。 同じアセットを参照する岩は、すべてその設定を使います。複製した練習用アセットなら、もとの岩を使っている別のレベルへ変更を広げずに試せます。

ほかの有効化方法もある
1つで確認できたら、取り込み時や一括操作も使えます。

| タイミング | 操作 |
|---|---|
| 新しくインポートするとき | インポート設定の「Build Nanite」をオン |
| すでにある複数のアセットをまとめて変えるとき | コンテンツブラウザで選択し、右クリック →「Nanite」→「Enable」 |
| 1つの設定を見ながら変えるとき | Static Mesh Editorの「Enable Nanite Support」→適用・保存 |
有効化にはデータを準備する時間がかかります。大量のアセットへ広げる前に、まずこの1種類が正しく表示されることを確かめましょう。
どんなメッシュから試すとよいか
最初の候補は、細かい形を持つ岩・石像・建物の装飾 です。近くでは細部を見せ、遠くでは簡略化できるので、Naniteの役割を観察しやすくなります。同じ岩を何個も置く場面も候補です。

一方、もともと三角形が少ない箱や、単純な形で空を覆うスカイスフィアでは、削減できる仕事が少ないことがあります。画面に大きく映る物体だから不向き、1つしかないか ら無意味、とは限りません。 大きく映る精巧な石像と、数枚の面でできた壁では、元の仕事量が違います。
また、岩や壁が奥の物体を隠すことを 遮蔽(しゃへい) といいます。Naniteは隠れた形状を描画から外す処理も行います。ただし、細かな葉が何層も重なるような場面は、隠れている部分を省きにくくなります。
「有効化できるか」を確認し、候補を1種類選んで比較する。この順で進めると、最初から全部のアセットを変更する必要はありません。
半透明や、揺れる葉は分けて考える
形状が対応していても、表面の描き方で条件が変わります。マテリアルの Blend Mode は、表面を不透明にするか、切り抜くか、透けさせるかを決める設定です。

| 描き方 | 例 | Naniteで扱うとき |
|---|---|---|
| Opaque(不透明) | 岩・石像・壁 | 今回の練習向き |
| Masked(切り抜き) | 葉の形だけを残した板 | 対応。ただし、隙間のある面を大量に重ねる場面は負荷も確認する |
| Translucent(半透明) | 透けるガラス | このBlend Modeは非対応。半透明部分はNaniteを使わない構成にする |
Maskedは「半分透ける」のではなく、描く部分と、切 り抜いて描かない部分を分ける 方法です。葉を使ったモデルでも、Maskedの板なのか、葉の輪郭まで形で作っているのかで、必要な処理が変わります。
非対応のマテリアルでは、標準のマテリアルへ置き換わり、Output Logへ警告が出る場合があります。「消えたら必ず半透明」と決めつけず、警告と設定を確かめてください。窓を含む建物なら、壁はNanite、ガラスは別の非Naniteメッシュに分けられます。
風で葉を揺らす World Position Offset は、面の角にある点(頂点)を動かして、形を変える処理です。これにも対応範囲や負荷の注意点があります。初回は揺れない岩で確認し、草木やキャラクターへ広げるときに、それぞれの機能を確認すると学びやすくなります。
実践:岩場で見た目と負荷を比べる
岩の割れ目を残しながら、小さな岩場を作ります。先ほどの SM_Rock_NaniteTest を使い、1つで描画を確認 → 数を増やして負荷を比較 の順に進めましょう。
1. まず、Naniteで描かれているかを見る
レベルのビューポートで、通常「Lit」と表示されているビューモードのメニューを開きます。「Nanite Visualization」→「Mask」を選んでください。
緑の物体はNanite、赤の物体は非Nanite を表します。岩が緑になれば、有効化したアセットがNaniteで描かれています。床が赤 いままでも構いません。床まで同時に変更する必要はありません。
次は「Triangles」に切り替え、カメラを岩へ近づけたり、離したりします。これは通常の色や質感の代わりに、描かれる三角形を観察する表示です。

| 表示 | 何を見るか |
|---|---|
| Mask | 対象の岩がNaniteで描かれているか |
| Triangles | カメラを動かしたとき、岩の表面の分割がどう変わるか |
| Clusters | 三角形をまとめて扱う単位が、どう分かれているか |
近くでは割れ目まで細かく分かれ、離れると、その場面には不要な細かさが省かれます。岩全体で使う三角形が減っても、画面上で三角形が大きくなるとは限りません。 岩自体も小さく映るため、単に「遠くほど網目が大きければ成功」とは判断しないでください。
最後に「Lit」へ戻し、同じようにカメラを動かします。可視化では変化していた分割が、普段の表示ではどれくらい気になるか。岩の輪郭や大きな割れ目を目印に比べてみましょう。
図は表示内容を説明するためのイメージです。実際の配色や細かな分割は、モデルとUEのバージョンによって変わります。
2. 同じ岩を少しずつ増やす
- 岩を選び、
Ctrl + Wで複製して移動する。 - 通路の両脇へ、まず合計10個ほど置く。
- 動作に余裕があれば20〜50個へ増やし、近くと遠くの岩が同時に見える場所を選ぶ。
増やすのはレベル上の配置で、アセットを毎回複製する必要はありません。同じ1つのメッシュを参照する岩場 にしておけば、有効化の切り替えを1か所で行えます。
3. 比較する条件をそろえる
見た目は「Lit」に戻し、可視化表示を終えてから測ります。カメラを動かさず、ビューポートの大きさ・解像度・品質設定・岩の数をそろえます。シェーダーのコンパイルや初回の読み込みが落ち着くまで待ってください。
エディタ下部のコンソール入力欄などから stat unit を実行すると、処理時間が表示されます。単位の ms(ミリ秒) は1秒の1000分の1です。
| 項目 | 表す時間 |
|---|---|
| Frame | ゲームの1フレームにかかった時間 |
| GPU | GPUが描画に使った時間 |
| Draw | CPU側で描画の処理を進めるスレッドの時間 |
| Game | ゲームの処理を進めるスレッドの時間 |
スレッドは、処理を進める担当の流れです。ここでは DrawもCPU側の値で、GPUの描画時間そのものではない と区別できれば十分です。これらの仕事は並行して進むため、値を全部足してFrameを求めるものでもありません。

4. 同じアセットのオン・オフを比べる
次の表へ、自分の環境で出た値を記録します。数値は少し揺れるので、同じ位置で数秒観察し、おおよその範囲を残すと比較しやすくなります。
| 設定 | Frame | GPU | Draw | Game | 岩の輪郭・割れ目 |
|---|---|---|---|---|---|
| Naniteオン | 記録 | 記録 | 記録 | 記録 | 記録 |
| Naniteオフ | 記録 | 記録 | 記録 | 記録 | 記録 |
- Naniteオンの状態を記録する。
- Static Mesh Editorで「Enable Nanite Support」をオフにし、適用・保存する。
- レベルへ戻り、同じ条件で記録する。
- もう一度オンへ戻して適用・保存し、同じ傾向になるか確かめる。
オフにしたときの動作が重すぎるなら、いったん岩の数を減らし、両方を同じ数で測り直します。最初から大量に置く必要はありません。
素材に通常描画用のLODが用意されていれば、オフではそれも使われます。設定によって描かれる形の精度も変わるので、速度だけでなく見た目も記録して判断します。
5. 数値と見た目を合わせて判断する
Frameが短くなり、必要な形が保たれていれば、その岩場ではよい改善です。ただし、Drawだけが短くなっても、Gameなど別の処理が長ければ、ゲーム全体のFrameは変わらないことがあります。
このように、全体の速さを制限している部分を ボトルネック と呼びます。Naniteが有効になっ たかはMaskで、ゲームが軽くなったかはFrameを中心に判断します。緑になったこと自体が、速度向上の証明ではありません。
差が小さければ、「失敗」と決めずに記録を残します。元の形状が単純な場合や、マテリアル・光・ゲーム処理が主な負荷になっている場合もあります。詳しい切り分けはパフォーマンス計測の記事で扱います。最終的な採用判断は、遊んでもらう端末とゲームの実行状態でも確認しましょう。
うまくいかないとき
| 症状 | 確認するところ |
|---|---|
| Naniteの設定が見つからない | レベル上のActorではなく、Static Meshのアセットを開いているか |
| Maskで岩が緑にならない | 対象アセット、有効化後の適用・保存、Nanite対応の動作環境 |
| 色や質感がおかしくなった | マテリアルのBlend Mode、Output Logの警告 |
| 三角形の変化が分かりにくい | 元のメッシュが十分に細かいか。Trianglesで近づき、離して比べているか |
| 数値が大きく揺れる | カメラや解像度が変わっていないか。コンパイルや読み込みが続いていないか |
| Drawが下がったのに滑らかさが変わらない | Frame・GPU・Gameも比較する。FPSの上限設定などで差が見えない場合もある |
おまけ:描画以外にも残る仕事
当たり判定には、別の形を使うことがある
Fallback Mesh(フォールバックメッシュ) は、Naniteの詳細な形をそのまま使わない処理のための、代わりのメッシュです。Nanite非対応の描画や、設定によっては、メッシュの面を使う当たり判定(Complex Collision)などで使われます。

そのため、見た目の細かな割れ目と、当たり判定の形は一致するとは限りません。キャラクターが乗る岩なら、歩いたときに浮いたり引っかかったりしないかも確認します。SimpleとComplexの使い分けも参考にしてください。
なお、コンソールの r.Nanite 0 は、通常はFallback Meshを描く状態へ切り替えます。元の高精細なメッシュをNaniteなしで描く比較と、同じ条件になるとは限りません。 今回、アセット側の有効化を切り替えたのは、この違いを避けるためです。
マテリアルや容量の確認も続ける
Naniteが主に工夫するのは、形状を描く処理です。重いマテリアル、複雑な光の計算、ゲームロジックまでまとめて軽くするわけではありません。表面の処理はマテリアル入門と分けて考えましょう。
データ容量も「有効にすると一律に何倍」とは決 まりません。Naniteの圧縮、元の形状、Fallback Mesh、テクスチャを含め、プロジェクトで確認します。高精細なモデルを扱いやすくなっても、素材を無制限に増やせるわけではありません。
草木やキャラクターは、次の段階へ
骨のアニメーションでキャラクターを動かすSkeletal Meshや、草木向けの機能は、UEのバージョンによって対応範囲が変わります。岩でできたことを、そのまま髪・服・風で揺れる森へ当てはめず、対象機能の説明と計測を確認してから広げます。
慣れてきたら「Nanite Visualization」→「Overdraw」で、形状が重なって処理される部分を探す方法もあります。Overdraw(オーバードロー) は、画面の同じ場所で重複する描画の仕事です。密集した葉や、ほぼ同じ位置に重ねた面は、次に観察する題材になります。
まとめ
Naniteは、画面に必要な形の細かさを選び、高精細なメッシュを扱いやすくする仕組みです。元のモデルの三角形を、どの場面でも全部描くわけではありません。
まずは不透明な岩を1つ有効化し、Maskで適用、Trianglesで分割、Litで見た目を確かめます。それから同じ岩場のFrame・GPU・Draw・Gameを比べれば、仕組みの理解と、自分のゲームでの採用判断をつなげられます。