3.

UE5 の Nanite と LOD の違い|使い分けの指針

編集

この記事の要点

  • 従来の LOD はメッシュ全体を段階的に差し替える方式、Nanite はメッシュ内部のクラスタごとに細かさを選ぶ方式という根本的な違いがあります。
  • Nanite を有効にしたメッシュでは、従来の LOD 設定は使われなくなります。両方を同時に効かせるという運用にはなりません。
  • ただし LOD の知識が不要になるわけではなく、Nanite 非対応のアセットや非対応環境向けのフォールバックでは今も必要です。
  • 遠景をまとめる HLOD は Nanite とは目的が違う仕組みで、大規模レベルでは併用が前提になります。
  • プロジェクト単位で「どのアセットを Nanite、どれを LOD 運用にするか」の方針を先に決めると、後工程の手戻りが激減します。

1従来の LOD がやってきたこと

LOD(Level of Detail)は、カメラからの距離に応じてモデルを段階的に粗いものへ差し替える、長く使われてきた最適化手法です。Unreal Engine 5 (UE5) でも従来どおり利用でき、1つのスタティックメッシュに LOD0(最も細かい)、LOD1、LOD2……という複数の段階を持たせ、画面上で占める大きさが一定の閾値を下回ったところで次の段階へ切り替えます。

この方式は仕組みが単純で、対応していない環境がほぼなく、制御も明快です。一方で運用上の負担がはっきり存在します。

  1. 作成コスト:段階ごとのモデルを用意する必要があります。自動生成に頼れる場面もありますが、シルエットが重要な形状や、削減で破綻しやすい部品は手作業の調整が必要になります。
  2. 閾値調整:切り替わる距離が近すぎると目立ち、遠すぎると効果が薄くなります。アセットごとに最適値が違うため、数が増えるほど調整が終わりません。
  3. ポッピング:段階が切り替わる瞬間に形状が飛ぶ現象です。距離を離す、遷移をぼかすなどの回避策はありますが、根本的にはなくなりません。
  4. 段階内では固定:LOD1 が選ばれている間、そのメッシュ全体が LOD1 の細かさになります。大きな建物のように、手前の壁と奥の壁で必要な細かさが違う場合でも、全体で1つの段階しか選べません。

2Nanite が変えた前提

Nanite は、この「メッシュ全体で1段階」という制約そのものを外しました。Nanite を有効にしたメッシュは、事前処理で小さな三角形のかたまり(クラスタ)へ分割され、それを段階的にまとめた階層が生成されます。実行時にはこの階層のどこを使うかがクラスタ単位で選ばれます。

結果として、1つのメッシュの中で手前は密に、奥は粗く描かれます。さらに切り替えの粒度が非常に細かいため、従来型 LOD で目立っていた形状の飛びが実用上ほとんど気にならなくなります。段階を作る作業も閾値の調整も不要で、Nanite を有効にするだけでジオメトリの細かさが自動的に管理されます。

従来の LOD(段階を丸ごと差し替え) Nanite(クラスタごとに選択) LOD0 LOD1 LOD2 距離の閾値でメッシュ全体が切り替わる 切り替わる瞬間に形状が飛びやすい 同一メッシュ内で手前は細かく奥は粗く 段階の作成・閾値調整が不要
従来 LOD は「メッシュ単位・離散的」、Nanite は「クラスタ単位・連続的」に細かさを決める

3比較表で違いを整理する

観点従来の LODNanite
細かさを決める単位メッシュ全体で1段階メッシュ内のクラスタごと
段階の作成手動または自動生成で用意する有効化時に自動生成される
切り替えの見え方閾値で切り替わりポッピングが起きやすい粒度が細かく切り替わりが目立ちにくい
調整作業アセットごとに距離の閾値を詰める基本は不要。必要なら品質設定で全体調整
対象アセットほぼすべてのメッシュスタティックメッシュが基本。種別ごとの対応はバージョンによる
マテリアルの制約とくになし半透明は対象外など制約がある
必要な実行環境広い環境で動作するDirectX 12 と SM6 対応が前提
データ容量段階の数だけ増える専用データを持つため増える傾向
得意な状況低〜中ポリゴン、幅広い環境への配布高密度メッシュを大量に配置する構成

4併用はできるのか

実務でよく出る疑問が「Nanite と LOD を同時に使えるのか」です。答えは、1つのメッシュについては同時には効かないです。Nanite を有効にしたメッシュでは細かさの制御を Nanite が担うため、そのメッシュに設定してある従来型の LOD 段階は使われなくなります。LOD の閾値をいくら調整しても挙動は変わりません。

ただし、Nanite を有効にしても従来型のデータが完全に消えるわけではありません。Nanite が使えない状況のために「フォールバックメッシュ」と呼ばれる簡略版が生成されます。これは要件を満たさない環境での描画や、当たり判定など詳細ジオメトリをそのまま使わない処理で利用されます。つまり、単一メッシュ内では「Nanite が主、フォールバックが控え」という関係になります。

一方、プロジェクト全体で見れば併用は当たり前に発生します。Nanite 化する高密度アセットと、従来どおり LOD で運用するアセットが同じレベルに共存する形です。どちらに寄せるかをアセット種別ごとに決めておくのが、現実的な設計です。

5LOD 運用を続けたほうがよいケース

○ Nanite に寄せる
フォトグラメトリの岩や地形パーツ、CAD 由来の高密度部品、建材や小物を大量に敷き詰める背景、LOD 作成の工数を削りたい量産アセット。三角形が多く、動かず、繰り返し配置するものほど向きます。
△ LOD を残す
Nanite 非対応の環境へ配布する必要がある構成、対応状況が環境依存となるアセット種別、半透明を多用する表現、もともと軽量で Nanite の固定コストに見合わないメッシュ。判断に迷ったら実測して比べるのが確実です。

とくに注意したいのが、幅広い動作環境をターゲットにする場合です。要件を満たさない環境では自動的にフォールバックへ切り替わりますが、そのときの見た目と負荷が許容できるかは検証しないと分かりません。フォールバック側の精度設定を放置していると、低スペック環境で想定外に重くなったり、逆に粗すぎて破綻したりします。低スペック環境も想定するなら、フォールバックの品質を「その環境向けの LOD」として意識的に設計しておくべきです。

6HLOD との関係を混同しない

LOD とよく混同されるのが HLOD(階層的 LOD)です。LOD が「1つのメッシュを段階的に簡略化する」仕組みなのに対し、HLOD は「離れた場所にある複数のアクタをまとめて1つの遠景用オブジェクトに置き換える」仕組みです。目的が違うため、Nanite があっても HLOD の役割はなくなりません。

Nanite は個々のメッシュの描画コストを抑えますが、遠景に何千個ものアクタが存在すること自体のコスト、たとえばロードやカリングにかかる処理までは肩代わりしません。広大なマップでは World Partition によるロード管理と HLOD の組み合わせが引き続き重要です。HLOD が古いままだと遠景の見え方が想定と変わり、原因の切り分けを難しくします。古いHLODアクタを検出、HLODをリビルドする必要がありますという警告が出たら、放置せずリビルドしてください。

なお、旧来の構成を引き継いだプロジェクトでは World PartitionとWorld Compositionの違いを把握しておかないと、レベル分割の単位と最適化施策がかみ合わなくなります。ビルド状態を最新にしたうえで評価する、という基本も忘れないようにしましょう。

7プロジェクト方針の決め方

最後に、実務で決めておくとよい順序をまとめます。

  1. 動作対象を先に決める:DirectX 12 と SM6 を必須にできるのか、それとも下位環境も想定するのか。ここが Nanite 採用の可否を左右します。
  2. アセットを分類する:背景の静的な構造物、細かい小物、植生、動くもの、半透明を含むもの、という分類ごとに Nanite か LOD かの方針を決めます。
  3. 代表アセットで実測する:方針を全体に広げる前に、各分類の代表的なアセットで Nanite の有無を比較計測します。感覚ではなく数値で判断します。
  4. マテリアルの設計を合わせる:半透明が必要な部分をメッシュとして分離するなど、マテリアル側の方針も同時に決めておくと後戻りが減ります。
  5. ライティングとセットで検証する:Nanite の精細さを活かすには影の表現も見合ったものにする必要があります。ライティング設定を含めた状態で最終的な負荷を確認します。

Nanite は「LOD の後継」というより、「ジオメトリの細かさ管理を自動化する別の選択肢」と捉えるのが実態に近い理解です。従来の LOD が不要になったわけではなく、適用範囲が住み分けられただけと考えれば、どちらを選ぶべきかの判断もぶれにくくなります。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. Nanite とは?有効化の手順と対応条件
  2. Nanite が使えない・効かないメッシュの条件と対処
  3. Nanite と LOD の違いと使い分け