VRunner

VRマーケットを牽引するトップランナーのインタビュー誌

UnityでOcclusion Cullingを使ってCGレンダリングの負荷を軽減する方法

UnityでOcclusion Cullingを使ってCGレンダリングの負荷を軽減する方法

◇はじめに

以前に負荷軽減でMesh Bakerを使った負荷軽減についての記事を投稿しました。

今回はOcclusion Cullingを用いた負荷軽減の方法について見ていきましょう!。

 

◇Occlusion Cullingとは

参照:Unity公式:Unity Manual Occlusion culling

オクルージョンカリングは、他のゲームオブジェクトによって完全に非表示(オクルージョン)になっているゲームオブジェクトのレンダリング計算をUnityが実行できないようにするプロセスです。

 

カメラに映ってないオブジェクトを非表示にする(レンダリングしない)ことで処理を軽減できます。

 

◇開発環境

Unity2020.1.6f1

Windows

 

今回確認するシーンについて

 

大きさが様々のCubeを複数配置しただけのシーンです。

このCube全てにOccluder Static と Occludee Staticを設定します。

 

Occlusion Cullingを行う

Occluder Static と Occludee Staticを設定する

他のオブジェクトを遮蔽するものにOccluderを設定し、他のオブジェクトに遮蔽されるものにOccludeeを設定します。

両方設定する事も可能です。

 

対象のオブジェクトを選択し、InspectorのStaticの▽をクリックします。

Occluder Static と Occludee Staticをクリックします。

 

また、複数選択していっぺんに変更することが可能です。

 

Occlusionの設定を行う

Window > Rendering > Occlusion Cullingをクリックして設定画面を表示します。

Bakeをクリックします。

 

<Smallest Occluder>

この値は遮蔽で遮るための最小の値を設定します。

つまり、ここで設定した大きさより小さいオブジェクトでは遮蔽物になることができません。

 

この値を小さくすると遮蔽の精度が上がりますがその分データサイズが大きくなります。

 

設定する大きさの単位はメートルです。デフォルトでは5メートルになっています。

ここでは1に設定します。

 

<Smallest Hole>

遮蔽物と遮蔽物の間の最小値の設定です。この値が小さいほど隙間の向こう側にあるオブジェクトがカリングされずに見える精度が上がります。

その分データサイズが大きくなります。

 

Smallest Holeで設定する大きさの単位はメートルです。デフォルトでは0.25メートル(25センチ)になっています。

今回はデフォルトのまま使用します

 

<Backface Threshold>

100未満にするとモデルの裏面の見えない部分のメッシュを削除して軽量化していきます。

 

背面の描画が遮蔽に関わる場合などは100に設定しておく方が良いので、一旦100のまま使用してもっと軽量化したい場合などに細かく設定すると良いでしょう。

今回はデフォルトのまま使用します。

 

設定が完了したらBakeをクリックします。

 

◇Occlusion Culling結果を確認する

Occlusion Culling > Edit でBake結果を確認する

Bakeが完了したら青い格子状のものがシーンに表示されます。

表示されてない場合はOcclusion CullingをEditにし、View Volumesを有効にすると表示されます。

 

Occlusion Culling > Visualizeでカメラを動かして遮蔽によってオブジェクトが消えていることを確認する

Occlusion CullingをVisualizeに設定してヒエラルキーのCameraを選択します。

 

 

カメラを左右に動かしてみるとシーン上でオブジェクトが消えたり現れたりしていることが確認できます。

<エディタ上で実行してカメラを動かす>

 

◇静的なオブジェクト以外も遮蔽で消す

Dynamic Occlusionのチェックをオンにすると動的なオブジェクトに対しても遮蔽で消えるように設定できます。

 

最後に

以上がOcclusion cullingの設定方法でした!

 

設定自体は意外と手軽ですね!

見えない範囲の不要な描画をカットできるのは負荷軽減にとても有効なので設定して確認してみてください。

 



◇アカデミーからのお知らせ

VRプロフェッショナルアカデミーでは受講生を募集しています。

VR開発に興味があるUnity初心者の方はVRアドバンスコースVRビギナーコースで一からUnityを学習し、VRアプリ開発まで学習できます!

 

Unityでの開発経験はあるけどVRについては開発したことが無い、けどVR開発してみたい!という方はVRエキスパートコースでより実践的なアプリ開発を学習できます。

 

 

また、VR以外にもARアプリ開発の学習ができるARビギナーコースARエキスパートコースをご用意しています。

 

現在注目されているVR・AR技術に興味があり開発を行ってみたい方は是非資料請求オープンキャンパスにご参加いただければと思います。

お悩みの方はお気軽に個別相談会にお申し込みください。

担当スタッフが丁寧にVRやUnityについてのご説明からさせていただいております。

 

皆様のご参加を心よりお待ちしております。

Return Top