今回はUnityでの最適化に関する話で、「LODグループ」という機能を使って描画負荷を下げる方法について説明します。オープンワールドなどで大量のメッシュを表示する場合や、スマホ用ゲームの場合に役立つ機能なのでぜひ使いこなせるようになって頂ければと思います。
はじめに:LODグループとは?
でははじめに「LODグループ」とは何か?という部分から説明します。
LODとは「Level of Detail」の略で、
- カメラの近くのオブジェクトのメッシュはハイポリ表示
- 遠くのオブジェクトのメッシュはローポリ表示
することで描画の負荷をなるべく抑えようというアイデアのこと。そしてこれを実際に扱えるコンポーネントが「LODグループ」コンポーネントです。
要するにLODグループコンポーネントを使えば、遠くのオブジェクトの描画負荷を削減することができるというわけですね。例えばオープンワールドゲームでは木などを大量に表示することが多いのでLODグループは大いに役立ちそうです。
※ちなみに、LODグループコンポーネントは「ハイポリのメッシュを自動的にローポリに変換してくれるわけではない」ので勘違いしないようにしましょう。つまりLODグループ機能を最大限活用するためにはハイポリのメッシュとローポリのメッシュをそれぞれ用意する必要があります。
LODグループの使い方・設定方法
次にLODグループの使い方(設定方法)は次の通りです。
- 空のゲームオブジェクトにLOD Groupコンポーネントをアタッチする
- LODの数と割合を適宜変更する
- LODとして表示したいゲームオブジェクトを1.の子にする
- 各LODにメッシュを割り当てる
手順1:空のゲームオブジェクトにLOD Groupコンポーネントをアタッチする
まず、LODグループを扱うには「親」となるゲームオブジェクトが必要です。新しく空のゲームオブジェクトを作り、そこにLOD Groupコンポーネントをアタッチしましょう。
手順2:LODの数と割合を適宜変更する
次にLODの数と割合を必要に応じて適宜変更します。デフォルトでは
- LOD0(100%)
- LOD1(60%)
- LOD2(30%)
- Culled(10%):カリングする(=メッシュを表示しない)
となっていますが、それぞれの項目の上で右クリックすると項目を削除したり、新しい項目を挿入できたりします。
また、LODの割合は「LODグループのゲームオブジェクトの高さが画面上でその割合になったらLODを切り替える」という意味(※)で、項目の境界部分をドラッグすることでパーセンテージを変更できます。こちらも必要に応じて変更しましょう。
※わかりにくいので補足しておくと、例えばデフォルトではLODグループを持つゲームオブジェクトの高さが画面の高さの60%になるとLOD1に切り替わります。
手順3:LODとして表示したいゲームオブジェクトを1.の子にする
そうしたら次はLODとして表示したいゲームオブジェクトを、手順1で作ったゲームオブジェクトの子に設定します。LODが3つなら3種類のゲームオブジェクトを用意しましょう。
手順4:各LODにメッシュを割り当てる
最後に各LODにメッシュを割り当てれば完了です。各LODをクリックすると「Add」というボタンが表示されるので、それをクリックして対応するメッシュを登録しましょう。
おわりに
以上、簡単ではありますがLODグループの使い方について解説しました。負荷軽減に非常に役に立つ機能なのでぜひ使ってみてください。