LODを使って負荷を軽減しよう

LODとは

LOD とはカメラからの距離に応じて、3Dオブジェクトを描画するポリゴン数を減らすことができる機能のことです。

LOD を設定するには、3Dオブジェクトのディテールを下げた、別のメッシュが必要になります。これらのメッシュは LOD レベルといいます。3Dオブジェクトがカメラから遠いほど、Unity は LOD レベルの低い3Dモデルを描画します

LOD を正しく活用することで遠くにある3Dオブジェクトに対する負荷を減らし、ワールドを快適に体験できるようにできます

1からLODを設定してみよう

  • Hierarchy を右クリック、もしくは Unity 上部メニュー欄の GameObject から空のオブジェクトを作成します。わかりやすいように名前を「LOD」に変更します。
  • 空のオブジェクトを選択し、Add Component から LOD Group を追加します。子の階層に LOD レベルを適用したい3Dモデルを配置します。
  • LOD Group のコンポーネントの中にある LOD 0 を選択してください。
    • LOD 0 には近くに寄ったときに表示される3Dモデルを設定します。
  • Renderers の欄にある「Add」ボタンを押して適用したいモデルを選択しましょう!
    • このときすでに Scene に配置しているモデルを選択すると、ダイアログが表示されます。モデルをLODの子構造に変更するか聞かれているため、「Yes, Reparent」を選択します。
  • 同じ様にして ポリゴン数の少ないモデルを LOD 1 に設定します。
    • また、Culled に設定した距離になるとモデルが描画されなくなります。

LOD に設定したモデルはカメラの位置によって切り替わります。
InspectorのLOD Groupのバーのそれぞれの境目を左クリックでドラッグすることで切り替わる距離を編集できます。

LOD Group のカメラマークをドラッグすると、モデルが切り替わる様子を確認できます。また、シーンを再生してワールド内を歩き回ることでも確認することができます。

BlenderなどでLODメッシュをつくる

また、1から設定しなくとも LOD に対応したモデルの書き出し方法があります。
Blender などから書き出すメッシュを正しく命名すると、Unity はモデルをインポートするときに LOD Group コンポーネントを持つ3Dオブジェクトを自動的に作成して設定してくれます。

  • まず Blender などのモデリングソフトで、必要な数の LOD メッシュをつくります。
  • 次に以下の命名規則に従ってメッシュに名前を付けましょう。
  • 最もポリゴン数の多い詳細な LOD レベルを、〇〇_LOD0 とします。
  • 次の LOD レベルを 〇〇_LOD1、〇〇_LOD2 の様に命名しましょう。
    • ※〇〇には任意の同じ名前が入ります。

作成したLODモデルを同じ位置に合わせて FBX ファイルとして出力します。
Unity に FBX をインポートすると、Unity はグループ化されたメッシュと命名規則を認識し、適切な設定で LOD Group コンポーネントを自動的に作成してくれます。

Blender からモデルを書き出す方法についてはこちらの記事を参考にしてください。

LODを使って遠くのオブジェクトを消そう

遠くにあるオブジェクトを消す方法の一つとしてオクルージョンカリングがあります。
オクルージョンカリングはオブジェクトが他に隠されていて視界に映らないときに描画しない機能です。オクルージョンカリングについてはこちらの記事を参考にしてください。

LOD を用いることで、より簡単にオブジェクトを消すことができます。LOD を設定する章でも紹介しましたが、Culled に設定した距離になるとモデルが描画されなくなります。

ワールドに配置するあまり重要でない小さなオブジェクトなどは LOD Group の Culled に設定し、距離によって一括で表示を消すと描画負荷が減ります。

LODのクロスフェードで滑らかにつなごう

LOD Group の機能の一つとして、各レベルの LOD モデルが切り替わる際にフェードで滑らかに繋いでくれる機能があります。
この機能は標準のシェーダーでは利用することができません。Unity 公式が提供しているサンプルシェーダーを用いることでLOD クロスフェードを行う事ができます。

LOD モデルが切り替わる際にフェードで滑らかに繋いでくれる機能は Unity 5 向けに作成されているため表示に不具合が生じる可能性があります。

  • まずはこちらの Web ページからファイルをダウンロードしてください。緑色の「code」と書かれたボタンを押し、「Download ZIP」からZIPファイルをダウンロードします。
  • ファイルを展開し「Asset」 フォルダを Project ウィンドウにドラッグアンドドロップしましょう。ファイルをコピーするか聞かれたらスキップをしてください。
    • クロスフェードに対応した LOD マテリアルはアセットフォルダ直下の「Assets > CrossFadingLod」の階層に入っています。
  • LOD レベルに設定しているオブジェクトのシェーダーを Custom/CrossFadingLod を選択して適用してください。
  • 次に「LOD」を選択して、Fade Mode を「Cross Fade」に変更します。
    • また、InspectorのLOD Groupのバーから Fade Transition Width の値を設定してください。数値は 0.2~0.5 ぐらいがおすすめです!

これでLOD モデルが切り替わる際にフェードで滑らかに繋いでくれるようになりました。負荷軽減のためだけでなく、看板のポップアップ表示などにも使えますね!ぜひワールド制作に生かしてみてください。

記事をシェアしてワールド制作を盛り上げよう!