Culling

概要


カリングシステムを利用することでカメラに描画されていないキャラクタのクロスシミュレーションを停止させることが可能です。
これにより特に一人称視点のFPSやVRでのパフォーマンスが大きく向上します。

次の動画はカメラカリングの動作例です。
カリングシステムを有効にすることでパフォーマンスが向上していることに注目してください。

カメラカリング


カメラカリングはカメラに描画されないクロスシミュレーションを停止させる機能です。
これはカメラの視錐台から内外判定されます。

カリングモード

“Camera Culling Mode”はカメラから非表示になった場合の振る舞いを設定します。

Off カメラカリングを無効にします。
Reset シミュレーションをリセットします。
Keep シミュレーションを一時停止します。
Animator Linkage

キャラクターのAnimatorの”CullingMode”と自動的に連動します。
AlwaysAnimate => [Off]
Cull Update Transforms => [Reset]
Cull Completely => [Keep]

カリング判定方式

基本的にカリングはキャラクターのRendererコンポーネントの表示状態から判定されます。
そのためカリングを行うためにはレンダラーを1つ以上登録する必要があります。
“Camera Culling Method”はこのレンダラーの登録方法を指定します。

Automatic Renderer キャラクターのAnimatorから自動的に設定します。
これは通常Animator以下のすべてのRendererコンポーネントです。
Manual Renderer Rendererを手動で設定します。

カリング状態の確認


現在クロスコンポーネントが表示状態なのか非表示状態なのかはインスペクターの情報から確認できます。
シミュレーションから除外されている場合はVisibleフラグがFalseとなります。

留意事項


エディター実行時の注意

Unityエディタで実行する場合には、エディタのSceneビューもカメラカリングの対象となることに注意してください。
例えばGameビューにはキャラクタが映っていなくともSceneビューに映っている場合には描画対象となりカメラカリングは行われません。

影の影響

キャラクタの影も描画判定の対象となります。
キャラクタ本体が映っていなくとも、その影が画面に映っている場合はカリングされませんので注意してください。

すべての機能が停止するわけではない

カリングによりシミュレーションが停止状態になっても必要最低限の処理は実行されています。
そのため負荷が0になる訳ではないので注意してください。

Animatorのカリング問題

Animatorのカリングモードが”Cull Update Transforms”の場合に、キャラクタが再び画面に映ったときに一瞬シミュレーションが無効化されたポーズが表示されることがあります。
これはAnimatorのカリングがレンダリングプロセス中に判定され、その場でポーズがtransformに書き込まれシミュレーションの結果が上書きされてしまうためです。
これはUnityの仕様であり、残念ながら回避できません。