UDN
Search public documentation:
PrecomputedVisibilityJP
English Translation
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
事前計算されたビジビリティ
ドキュメントの概要: Daniel Wright により作成。
概要
事前計算されたビジビリティは、主に、モバイル型プラットホームに役立ちます。これは、ハードウェアによるオクルージョン クエリがないためです。また、コンソール上で分割されるスクリーンのように、レンダリング スレッドのボトルネックになるシナリオで、レンダリング スレッド時間を節約するのにも有効です。事前計算されたビジビリティによって、ランタイム メモリとライトニング ビルドの時間が幾分増加するものの、インゲームでレンダリング スレッドの時間が減ります。レンダリング スレッドの時間が節約されるのは、動的なオクルージョン システム (ハードウェアによるオクルージョン クエリ) によって処理されなければならないプリミティブの数を減らせるためです。また、動作が速いことにもよります。他方、動的なオクルージョン システムであれば、収束する時間が必要となり、これは、しばしばコーナーを回る際や素早く視点を回転させる際にパフォーマンスの低下を招きます。この技術は、中規模以下のレベルに有効です。理由は、レベルのサイズが大きくなれば、メモリおよび演算処理上の要件が増大するためです。また、ほとんど静的な環境においても有効です。たとえば、プレーヤーの動きが限られている場合や、2D 的なプレイ領域においてです。
注意: Lightmass は、事前計算されたビジビリティをビルドする必要があります。
事前計算されたビジビリティを使用するためにゲームをセットアップする
- PlayAreaHeight - カメラが位置することができる、サーフェスより上の高さ。これは通常、最も背が高いプレーヤーの目の高さにジャンプできる高さを加えたものになります。デフォルトでは、220 になっています。
事前計算されたビジビリティを使用するためにレベルをセットアップする

セルの配置

次の画像では、青いビジビリティ セルが Matinee カメラの軌道に沿って配置されている様子が分かります。

ビジュアル化の結果
- まず、事前計算されたビジビリティのためのレベルをセットアップし、ライトニングをビルドします。
- 視点をセットアップします。1 x 1 縦分割がかなり有効です。すべてのビューで、リアルタイム更新を有効にする必要があります。パースペクティブ ビューポートをプレー領域 (ビジビリティ ボリュームの内側で、地面に幾分近いところ) に動かすことによって、セルの中に入るようにします。これが有効になったと確認できるのは、コンソール上の stat initviews (統計の初期ビュー) に入るとともにパースペクティブ ビューのための stats (統計) を有効にして、Statically Occluded Primitives (統計的にオクルードされたプリミティブ) が 0 以外の値をとった時です。
- コンソールに ToggleOcclusion とタイプして、動的オクルージョン システムを切ります。ログに、Occlusion queries are now disabled (オクルージョン クエリが無効になりました) というメッセージが表示されます。これによって、事前計算されたオクルージョンの結果だけを調べればよくなります。
- パースペクティブビューの中で、ビューポートのドロップダウンから View Culling/Occlusion (カリング/オクルージョンをビューする) をクリックします。
このシーンでは、事前計算されたビジビリティのカリングが 2487 プリミティブ (下の Statically Occluded Primitives (統計的にオクルードされたプリミティブ) という統計値) になることが示されています。これらのプリミティブは、右側のワイヤーフレームではすべて表示されていません。:

次は、同一のシーンは、カメラをビジビリティセルの外側に少し動かしたものです。したがって、オクルージョンは起きません。右側のワイヤーフレームの新しいメッシュに注意してください。:

ビジビリティの設定

関係する統計
- stat initviews (統計の初期ビュー) の下にある Statically Occluded Primitives (統計的にオクルードされたプリミティブ) は、錘台カリングが起きた後、事前計算されたビジビリティによって、いくつのプリミティブが不可視とされたか表示しています。Occluded Primitives (オクルードされたプリミティブ) は、事前計算されたビジビリティと動的オクルージョン システムの両方によって、いくつのプリミティブが不可視とされたか表示しています。この 2 つの統計値の差は、事前計算されたビジビリティによって見逃されたプリミティブを動的オクルージョン システムがいくつカリングしたか表わしています。事前計算されたビジビリティがうまく機能している場合は、Statically Occluded Primitives (統計的にオクルードされたプリミティブ) は、Occluded Primitives (オクルードされたプリミティブ) の 50~80% 以内であるはずです。事前計算されたビジビリティがカリングするオブジェクトは、より少なく、その理由は、大きなセルのための情報を保存し、動的ないしはマスク化されたオクルーダを扱わないからです。(『制限』のセクションを参照してください)。 注意: この統計は、インゲームおよび PIE において非常に信頼度が高い。ただし、エディタ内ではそうではありません。原因は、エディタ内で描画されるデバッグ関連物すべてにあります。
- stat initviews (統計の初期ビュー) の下にある Decompress Occlusion (解凍オクルージョン) は、事前計算されたビジビリティを解凍するのにどのくらいの時間がかかったかを示しています。
- stat initviews (統計の初期ビュー) の下にある Precomputed Visibility Memory (事前計算されたビジビリティのメモリ使用) は、事前計算されたビジビリティによってどのくらいの実行時メモリが使用されたかを示しています。
結果
- トータル 2180 のオクルージョンのうち、1739 が統計的にオクルージョンされたプリミティブです。
- Xbox 360 では、事前計算されたオクルージョンがない場合に比較して、2.7ms のレンダリングスレッド時間の節約になります。(35.4ms ->32.7ms)
- 事前計算されたビジビリティのデータは、627Kb です。
- 新しいエリアに移動すると、そのエリアのためのオクルージョンが解凍されますが、その場合でも、レンダリングスレッドの処理落ちはわずか 1ms です。
制限
- 動くオブジェクトと動くオクルーダは扱いません。
- 不透明ではないオクルーダは扱いません。理由は、マスクされたオクルーダが、発見困難な小さな穴を開けることが多いからです。
- サーフェスより上のセルしか配置しません。そのため、飛ぶモデルを伴うゲームがそれほど多くの恩恵を受けることがありません。
- ストリーミングレベルを効率的に扱えません。データはすべて、固定したレベルに保存され、ストリーミングレベルを使ったストリームインおよびストリームアウトは行いません。
- 静的シャドウをキャストするトライアングルのみオクルードします。したがって、ライトマップされた interpactor が、オクルードすべきではないときにオクルードすることになります。また、シャドウをキャストしない動かないオブジェクトも、オクルードすべきときにオクルードしないことになります。
ビジビリティの問題をデバッグする
-
TogglePrecomputedVisibility
- 事前計算されたビジビリティ データの使用を切り替えます。 -
ShowPrecomputedVisibility
- 事前計算されたビジビリティ セルのデバッグ ビジュアル化を切り替えます。