オブジェクト単位で occlusion culling を制御する

高橋 啓治郎 -

Unity の occlusion culling のオン・オフ制御はカメラのプロパティのみ用意されており、オブジェクト単位で制御する手段は提供されていません。

これは例えば、遮蔽物を透過するようなエフェクトを使っている場合に問題になるかもしれません。下のスクリーンショットのように、カリングされることによって透過エフェクトが意味をなさなくなってしまうのです。カリングを防ぐには、カメラ単位でカリングをオフにする必要があります。

若干強引な方法になりますが、オブジェクト単位でカリングを無効化することも一応できます。Mesh の bounds (バウンディングボックス)を広げることでカリングを強引に無効化するというアプローチです。

meshFilter.sharedMesh.bounds
  = new Bounds(Vector3.zero, Vector3.one * 1000);

この方法は occlusion culling のほか、通常の view frustum culling (視錐台カリング)をも無効化してしまう可能性があるという欠点があります。

また、MeshFilter の sharedMesh に対して行った変更は、同一メッシュを共有している他のオブジェクトへも影響を与えるという点に注意してください。

サンプルプロジェクト - CullingSwitch

他にご質問がございましたら、リクエストを送信してください

0 コメント

ログインしてコメントを残してください。
Powered by Zendesk