【Unity】オクルージョンカリングしてみる
Unityではオクルージョンカリングという機能が使えます。
どんな機能かというと、カメラに映らないオブジェクトはレンダリングしないよ〜ってやつです(なんてテキトーなw)。
VRやAR、モバイル端末アプリをやってると、処理を軽くする必要があるわけで。
これがどのくらい有効なのか、検証してみました。
開発環境
- Unity 2019.2.15f1
- Japanese Otaku City(アセット)
秋葉を疾走
今回はオクルージョンカリングの機能を存分に発揮できるよう、秋葉の街を再現したアセットを使用しました。
ZENRINさん提供の無料アセットです。無料にも関わらず、結構な再現率。
さらにQueryちゃんというカワイコちゃんモデルまでついてくるという。
なんて太っ腹なんだ、ZENRINさん!!(秋葉以外もあるよw)
デモシーンでは車だったりQueryちゃんだったりが、秋葉の街を疾走してくれます。
まずはこのデモシーンをオクルージョンカリングなしで実行してみます。
左側の大きい画面がScene View、右下の小さい画面がカメラ映像となっています。
カメラ映像に写っている建物は一部であるにも関わらず、すべての建物がScene Viewに写っているのがわかりますね。
Profiler Windowで負荷状況を見てみます。
だいたい18fps程度出ていることがわかりました。
オクルージョンカリングの設定
詳しくはこちらw
まず、オクルージョンカリングしたい対象に対し、Static設定を行います。
今回は建物たちを対象としたいので、建物のルートオブジェクトを選択し、InspectorからOcculuder StaticとOcculudee Staticを選択します。
ルートオブジェクトの下にいる子オブジェクトたちも一緒に設定したいので、Yes, change childrenを選択。
次に、Occulusion Windowsを表示します。
Smallest Occuluderでは、対象とするオブジェクトの最小サイズを設定します。とりあえず1を設定しましたが、建物が対象なのでもっと大きくて良いと思います。
画面右下のBakeボタンを押下してベイクしたら、実行してみましょう。
オクルージョンカリングしてみたらこうなった
先ほどと同様、左側がScene View、右下がカメラ映像です。
カメラ映像はなんら遜色が無いのに対し、レンダリングされている建物が切り替わっているのがわかりますね。
次に負荷状況を見てみましょう。
うわーぉ!!劇的な変化です!!
だいたい58fpsくらい出ていることがわかりました。これはすごい!!
結論
- たくさんのオブジェクトを配置する場合、オクルージョンカリング機能を使おう
- Profiler Windowで負荷状況を確認しよう
- ZENRINさんのアセットは優秀!サンキューZENRINさん!!