LoginSignup
0
0

More than 1 year has passed since last update.

UnityのLODグループでLevel of Detailサンプル作ってみた

Last updated at Posted at 2021-07-25

オープンワールドゲーム作ってみたくないです?
著者はゼルダの伝説BotWからハマってGhost of Tsushimaは最高に好きです

オープンワールドを支える重要な技術の一つがLevel of Detail(LOD)です
これは被写体との距離などで表示するメッシュを切り替えることで
カメラ内のポリゴン数を減らし描画負荷を抑える技術です

Unityには簡単にLODを実現するツールがあるので
今回はこちらのサンプルを作りました

事前情報

Unity: 2020.3.11f1
LOD Group: https://docs.unity3d.com/ja/current/Manual/class-LODGroup.html

作業

Blenderでメッシュを用意

今回は高ポリゴン・中ポリゴン・低ポリゴンをBlenderで用意

青:UV SphereのSegments=12、Verts=182
緑:UV SphereのSegments=24、Verts:362
赤:UV SphereのSegments=48、Verts:722

Unityにそれぞれのメッシュを配置

UnityでEmptyObjectを配置し、子要素に3パターンのオブジェクトを追加
LODサンプル_Unity1.png
※わかりやすく横に配置してますが座標は同じにしてください

LOD Groupを設定

親要素に対しInspectorウィンドウでLOD Groupを追加します
LODサンプル_Unity2.png

各フォームの詳しい説明は公式ドキュメントがわかりやすく解説してるので省きます
LOD Group: https://docs.unity3d.com/ja/current/Manual/class-LODGroup.html

UnityのLOD Groupでは被写体が画面内で何%占めているかでメッシュの出しわけをします
上記画像だと100%ならLOD 0、60%ならLOD 1、30%ならLOD 2、10%なら表示しません
各ゲージ部分をクリックすると対象のオブジェクトまたはRendererを指定できます

あとはカメラアイコンをスライドするとSceneビューにプレビューされます
Sceneビューでカメラ移動しても反映されてると思います

LODサンプル.gif

比較

視覚的に球体の角張に差は殆どないのに
statsのTriangle数とVertex数が激減してるのがわかります

感想

LOD Groupのおかげで非常に簡単にLODを体験できました
ただ余りにも簡単かつ設定項目も少ないので
本格的に負荷軽減したいなら自作する必要がありそうです

メリット

・簡単に作れるのでモック作成向け

デメリット

・画面内の比率でメッシュ差し換えしているため、見切れてるときに低ポリゴンになる
 →Fade Modeでメッシュ切り替えを滑らかにすると緩和されるかもしれません

・メモリにはすべてのメッシュが載ってる気がするのでメモリも節約したい場合には向かないかも
 →Renderer指定にすれば動的ロードしてくれるかも?

08/19 追記

実際にメモリに全LODが展開されてるかチェックした

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0