はじめに
ゲーム制作するうえで、最適化は避けては通れない作業の一つです。ターゲットのプラットフォームがスマホなどのモバイル端末だとなおさら。
今回は描画負荷の軽減に使える、LOD(Level of Detail)についての記事です。
LOD(Level of Detail)とは
端的に説明すると、オブジェクトの画面占有率に応じてハイポリ・ローポリに遷移させる機能です。カメラに近いならハイポリ、遠ければローポリ...といった感じです。詳しくはUnityマニュアルをご覧ください。
LODの使い方・設定方法
では早速、実際にLODを使ってみましょう。
使用環境
今回記事で使用するUnityのバージョン等は以下の通り。
・Unity2022.3.31f1
・URP
1.LODを設定するオブジェクトを用意する
まずはLODを設定するオブジェクトを用意する必要があります。そしてLODを利用する場合、ポリゴン数の多いメッシュと少ないメッシュを用意する必要があります。
今回記事では3段階のポリゴン数の植木鉢オブジェクトを用意しました。
左側ほどポリゴン数が多いです。違いがわかるようにワイヤーフレーム表示の画像も以下に載せておきます。
2.空のオブジェクトを作成し、「LOD Group」コンポーネントを追加する
異なるポリゴン数のオブジェクトが用意出来たら、まず空のゲームオブジェクトを作成します。Hierarchyを右クリック、またはメニューの[Game Object]から[Create Empty]を選択して、空のゲームオブジェクトを作成しましょう。
今回記事では、この空のゲームオブジェクトに「PlantModels」と名前を付けました。
作成が終わったら、インスペクターの下にある「Add Component」ボタンをクリックし、「LOD Group」コンポーネントを追加しましょう。
3.用意したオブジェクトを「LOD Group」をアタッチした空のゲームオブジェクトの子にする
LOD Groupコンポーネントの用意ができたら、手順1.で用意したオブジェクトを空のゲームオブジェクトの子にします。
LOD対象のオブジェクトを子にしたら、これらのオブジェクトの位置や回転、スケールを統一しましょう。
4.LOD Groupに各段階のメッシュを設定する
手順3.が終わったら、LOD Groupコンポーネントに各段階のメッシュを登録していきます。LOD Groupコンポーネントをアタッチした空のゲームオブジェクトのインスペクターを参照し、LOD Groupの「LOD 0」内の「+」ボタンをクリックします。
そして、用意したLOD対象オブジェクトの中で、一番ポリゴン数の多いオブジェクト(記事の場合は「Plant_00」)のメッシュを設定します。
上記の手順をLOD 1、LOD 2でも行います。LOD 1には中程度のポリゴン数のものを、LOD 2にはポリゴン数の少ないものを設定してください。(記事の場合だと、LOD 1⇒Plant_01、LOD 2⇒Plant_02)
5.LODの割合を調整する
各LODにメッシュを設定し終えたら、各LODの割合を適宜変更していきます。
LODの切り替えは、LOD設定したオブジェクトが、画面の高さのうち、どれくらいの割合で占有しているかに応じてLODの段階を切り替えています。例えば上の画像ではLOD1は60%に設定されています。
これはLOD設定したオブジェクトの高さが、画面の高さの60%以下になったらLOD1のメッシュを表示するという意味です。
また、LODの段階にCulledというものがありますが、これは設定した割合以下になったらメッシュを表示しないという段階です。上の画像なら10%に設定されているので、画面の高さうち、オブジェクトの高さの占有率が10%以下になったら、そのオブジェクトを表示しないということになります。
割合の調整が終わったら、実際にカメラを動かすなどして確認しましょう。
以上で、LODの基本的な設定は終了です。
補足
LODの段階は追加、削除が可能
デフォルトでは、LOD0~2+Culledの段階が用意されていますが、この段階を増やしたり、減らしたりすることが可能です。
※Culledは削除不可
追加・削除の方法は、LODの割合を切り替える部分で右クリック、その後
・追加 ⇒Insert Before
・削除 ⇒Delete
で追加・削除が行えます。
より細かくメッシュを遷移したい場合などは、適宜追加・削除しましょう。
おわりに
以上で基本的な使い方だけではありますが、LODの使い方について説明してきました。複数のメッシュを用意する必要があるのが面倒ですが、描画負荷軽減の方法としては初心者でもとっつきやすい方法なので、是非とも使ってみてください。
コメント