Version: Unity 6.0 (6000.0)
言語 : 日本語
オクルージョンカリングで非表示オブジェクトを除外する
オクルージョンカリングのシーンの設定

オクルージョンカリング

オクルージョンカリングは、ゲームオブジェクトが他のオブジェクトに隠されていてビューに表示されない (隠されている) ときに、オブジェクトのレンダリング演算を行わない機能です。

カメラはフレームごとにカリング操作を実行してシーン内のレンダラーを検証し、描画する必要のないレンダラーを除外 (カリング) します。デフォルトでは、カメラは 視錐台カリング を実行します。これにより、カメラの視錐台に含まれないレンダラーはすべて除外されます。ただし、視錐台カリングでは、レンダラーが他のゲームオブジェクトによって遮蔽されているかどうかはチェックされません。そのため、最終的なフレームで表示されないレンダラーのレンダリング操作に、引き続き CPU と GPU の時間を浪費してしまう可能性があります。オクルージョンカリングは、これらの無駄な操作を実行しないようにします。

通常の視錐台カリングでは、カメラビュー内のすべてのレンダラーがレンダリングされます。
通常の視錐台カリングでは、カメラビュー内のすべてのレンダラーがレンダリングされます。
オクルージョンカリングは、近くのレンダラーによって完全に隠されているレンダラーを削除します。
オクルージョンカリングは、近くのレンダラーによって完全に隠されているレンダラーを削除します。

オクルージョンカリングを使用する場合

オクルージョンカリングによってプロジェクトのランタイムパフォーマンスが向上するかどうかを判断するには、以下を考慮します。

  • レンダリング操作の無駄を防ぐことで、CPU 時間と GPU 時間の両方を節約できます。Unity のビルトインのオクルージョンカリングは、CPU でランタイムの計算を実行し、節約した CPU 時間を相殺することができます。したがって、オクルージョンカリングは、オーバードローによってプロジェクトが GPU 依存になっている場合にパフォーマンスを改善できる可能性が非常に高くなります。
  • Unity は、ランタイムにオクルージョンカリングのデータをメモリに読み込みます。このデータをロードするのに十分なメモリがあることを確認する必要があります。
  • オクルージョンカリングの機能は 、小さく適切に定義されたエリアが固体のゲームオブジェクトによって互いに明確に区切られているシーンに最適です。一般的な例は、廊下でつながれた部屋などです。
  • オクルージョンカリングを使用して動的ゲームオブジェクトを遮蔽することはできますが、動的ゲームオブジェクトが他のゲームオブジェクトを遮蔽することはできません。Unity のビルトインのオクルージョンカリングは、ランタイムにシーンジオメトリを生成するプロジェクトには適していません。

オクルージョンカリングの仕組み

オクルージョンカリングは、Unity エディターでシーンに関するデータを生成し、そのデータをランタイムに使用してカメラに映る内容を決定します。データを生成するプロセスはベイクと呼ばれます。

オクルージョンカリングのデータをベイクする場合、シーンをセルに分割し、セル内のジオメトリと隣接するセルの可視性を説明するデータを生成します。可能な場合はセルをマージし、生成されたデータのサイズを削減します。ベイク処理を設定するには、Occlusion Culling ウィンドウ でパラメーターを変更し、シーンの Occlusion Areas を使用します。

ランタイムにベイクしたデータをメモリにロードし、Occlusion Culling プロパティが有効な各カメラについてデータのクエリを実行することで、そのカメラに映る内容を決定します。オクルージョンカリングを有効にすると、カメラは視錐台カリングとオクルージョンカリングの両方を実行します。

オクルージョンカリングで非表示オブジェクトを除外する
オクルージョンカリングのシーンの設定