Octrees、Kd-Trees、BSPは静的なジオメトリに対してのみ意味がありますか?


7

まだシーングラフを実装しています(この質問を参照)。さて、Kd-TreeやOctreeなどの空間表現でビュー錐台カリング(VFC)を行うのは、静的なジオメトリでのみ意味があるのでしょうか。私の疑問の理由は、通常、動的なジオメトリはシーンの小さな部分ですが、静的なジオメトリは非常に大きくなる可能性があり、動的なジオメトリは各フレームで空間表現の更新を強制的に処理するためです。

あなたの意見は?

トゥヌズ

回答:


9

一般に、静的オブジェクトと動的オブジェクトに個別のパーティションツリーを使用するか、動的オブジェクトではまったく無視しました。これは両方の世界の利点を提供します:

  • 静的オブジェクトでは、フレームごとにツリーを再計算する必要はありません
  • 動的オブジェクトは最小限のツリーの再計算のみを必要とします

動的オブジェクトを常に描画してもパフォーマンスに大きな影響が出ない場合は、フレームごとにツリーを再計算しないで済む方が良い場合があります。

別の最適化は、オブジェクトが特定の距離を移動したとき、または十分に高速で移動しているときにのみツリーを再計算することです。それ以外の場合は、とにかくすべてのフレームで同じツリーになってしまうでしょう。


素晴らしい答えです、私はこのようなものを期待しました。通常、動的ジオメトリと静的ジオメトリに異なるデータ構造を使用していますか?静的オブジェクトと動的オブジェクト間の衝突検出を行うときに、2つの構造を「満たす」ための特別な手順はありますか?
tunnuz

2
同じデータ構造を使用することは、実装がすでに記述されているため、通常は最も簡単です。したがって、バグが発生する機会も少なくなります。ただし、動的オブジェクトの場合、特にオブジェクトが頻繁に移動する場合は、ツリー全体を構築するオーバーヘッドと比較して、境界球チェックで十分な場合があります。これらの線に沿って、動的オブジェクトに対してそれほど積極的ではないパーティションシステムを記述して、計算時間を抑え、静的オブジェクトに対してより積極的で計算集約的なアルゴリズムを使用することは有益かもしれません。
Sean James

2
グリッドは動的オブジェクトに特に適していることがわかりました。彼らはシンプルで高速です。
ヒキガエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.