オクルージョンカリングのUnityパフォーマンスの最適化

1.オクルージョンカリングの簡単な説明

機能:オクルージョンカリング機能により、レンダリングするオブジェクトの数を減らすことができるため、フレームあたりのレンダリング時間が短縮されます。

原則:他のオブジェクトによって完全にブロックされているため、非表示のオブジェクトをレンダリングしないでください。

2.Unityのオクルージョンカリング機能の使い方の紹介

Unityは、動的オブジェクトのオクルージョンカリングもサポートしています。ただし、この記事の残りの部分では、静的オブジェクトのオクルージョンカリング特性にのみ焦点を当てます。

Unityのオクルージョンカリング機能を使用するには、おそらく次の3つのことを行う必要があります。

ステップ1:シーン内のどのオブジェクトが他のオブジェクトを遮るかを設定します(オクルーダー)

ステップ2:シーン内のこれらのオブジェクトを設定して、可視性クエリを実行します。つまり、他のオブジェクト(オクルード)によってブロックされる可能性が高いオブジェクトを特定します。

ステップ3:ゲームの実行中に使用するためにオクルージョンカリングデータをベイク処理します。

エディタで関連する操作を実行する前に、[オクルージョンカリング]ウィンドウを開く必要があります。

ここに画像の説明を挿入

3.Unityオクルージョンカリング機能の詳細な使用法

(1)オブジェクトをオクルードオブジェクトまたはオクルードオブジェクトとして設定します

オブジェクトを選択した後、そのオクルージョンウィンドウでそのオクルーダースタティックプロパティとオクルーディースタティックプロパティを設定できます。

  • オクルーダー

オブジェクトは、そのOccluder Staticをチェックすることにより、静的オクルーダーとして設定できます。理想的なオクルーダーは、頑丈でかさばるオブジェクトである必要があります。

原則1:他のオブジェクトをブロックする可能性のあるオブジェクトのみをオクルーダーとして設定する必要があります。一部の離れたオブジェクトはオクルーダーとして設定しないでください。そうしないと、カリングデータが指数関数的に増加し、実行時のカリングクエリの効率が低下する可能性があります。また、半透明のオブジェクトを障害物として設定しないでください。

原則2:同様の小さな穴のあるオブジェクト(ネット、青々とした葉のある木など)の場合、誤った結果が得られないように、それらをオクルーダーとして設定することはできません。(最小の
穴パラメータでこの状況を処理できますが、その値を小さく設定しすぎないでください)

  • 隠されている

オブジェクトのオクルーディースタティックをチェックすることにより(上記のように)、静的オクルードオブジェクトとして設定できます。

理想的な隠面オブジェクトは、より多くの場合に完全に隠されるようにサイズを小さくする必要があります。そのため、隠面カリングクエリを実行する方が意味があります。ただし、オブジェクトの分割が小さすぎると、オクルージョンカリングのパフォーマンスも低下します。

大きなオブジェクトはオクルージョンオブジェクトとして設定しないでください(たとえば、3dMaxでマージされてから、Unityエディターに注がれます)が、U3Dによってバッチ処理された後にレンダリングされた複数のメッシュは、単一のオクルージョンカリングの対象となることに注意してください。個別に実施されるため、影響はありません。

(2)ベーキング

オクルージョンウィンドウのベイクページで、シーンのオクルージョンカリングデータをベイクします。下の図を参照してください。

パラメータ設定:

ベーキングパラメータの調整により、精度とパフォーマンス/効率の間の妥協点が本質的になくなります。実際には、図3に示されている3つのパラメーター値はすべて、より大きな値から始まり、満足のいく結果が得られるまで減少し続ける必要があります。ベーキング時間が長すぎる、またはベーキングデータが大きすぎる場合は、パラメータを増やすようにしてください。
ここに画像の説明を挿入

  • 最小の穴

説明:視線が貫通する必要のある穴のあるオブジェクト(壁の穴、部屋のドアなど)がある場合は、最小の穴を直径よりも小さく設定する必要があります。穴

原則:カリングエラーがない(表示されているオブジェクトが削除される)場合は、値をできるだけ大きく設定する必要があります。

推奨値:0.05〜0.50

  • 最小のオクルーダー

説明:名前が示すように、これはシーン内で最小のオクルーダーのサイズです。設定が大きすぎると拒否成功率が低下し(ただし、拒否エラーが発生することはありません)、小さすぎるとパフォーマンスの問題が発生します。

原則:プレーヤーの高さよりわずかに大きい値に設定します。現在のプレイヤーの身長は約1.8です。

推奨値:2〜6

  • 裏面のしきい値

説明:このパラメーターの導入は、カリング・データのサイズを縮小することです。一方、不適切な設定は、カリング・エラーを引き起こします(表示されているオブジェクトが削除されます)。したがって、当面はデフォルト値の100を変更しないでください。

説明:PVSによって生成されたセルで観察された裏面の比率が設定値よりも大きい場合、セル関連のコンテンツは生成されたカリングデータに含まれないため、データサイズが小さくなります。実行時にカメラがセルに移動すると、カリングクエリの結果は「未定義」になります。
ここに画像の説明を挿入
(3)咬合拒絶の結果の検証

ベイク処理が完了すると、[ベイク処理]ページの下部にオクルージョンカリングデータのサイズが表示されます。図7を参照してください。オクルージョンカリングの結果は、シーンウィンドウでリアルタイムに表示できます。

具体的な方法は次のとおりです。

  • 視覚化ページを選択します。図8を参照してください。

  • シーン内のカメラを選択し、そのオクルージョンカリングオプションを確認します。図8を参照してください。

  • カメラの位置を移動または回転すると、シーン内のオブジェクトがリアルタイムで削除されます。これは錐台カリングとオクルージョンカリングの結果であることに注意してください。
    ここに画像の説明を挿入
    ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_40513792/article/details/115078009