2012-04-26 11 views
0

私は、サークル間の衝突検出ルーチンを作成しようとしています(これは凝固しています)。これは非常に新しいので、最初にすべての単一サークルを検出する検出を行いました。今では、(凝固した円のグループがある場合はより効率的な)十分に近い円だけをより正確にチェックするために、何らかの境界ボックスを作成する考えがありました。OpenGL:ピクセルオーバーラップ(衝突検出)

オブジェクトを選択してより正確な検出を行った場合、OpenGLはピクセルの重なりを検出して2つのオブジェクトが重なっているかどうかを確認できますか?もう少し最適化された衝突検出を行うための

その他のヒントは歓迎されている:)

ありがとうございました。

答えて

3

OpenGLの古いバージョン(< = 2.1)の「フィードバック」レンダリングモードを犠牲にしても、OpenGLにはそのようなビルトイン機能はありません。

しかし、サークルの特別なケースでは、衝突を探すためにはるかに早い方法があります。円の候補のペアについて、それらの中心間の距離が半径の合計よりも小さい場合、それらは重複します。さらに早くて、&の二乗距離を使用すると、sqrt()を避けることができます。

+0

はい、私はそれを使用していますが、円が凝固するので、グループの中心から最も遠い円までの距離を計算し、グループが大きな円であるように(中央から遠方までの距離サークル)、他のグループやサークルと重なっている場合は、より正確にチェックしています。 – DennisVDB

0

OpenGLでは、ピクセルオーバーラップを検出して2つのオブジェクトが重なっているかどうかを確認できますか?

OpenGLには衝突検出ルーチンがありません。

OpenGLには、特定の領域でレンダリングされたオブジェクトのリストを取得するために使用することができますが、重複を検出するために重複が発生する可能性があるため有用ではありません。

ステンシルバッファを乱用すると、オーバーラップするピクセルのリスト(および特定のピクセルで描画されたオブジェクトの数)を取得できますが、ステンシルバッファからデータを読み取り、すべてのピクセルを手動で繰り返し処理する必要があります。サークルコリジョンを手動でチェックするだけで、より速く(10.00倍)することができます。 8個以下のオブジェクトを使用しない限り、ステンシルバッファを使用してピクセル上に描画されたオブジェクトを特定することはできません。もう少し最適化された衝突検出を行うための

その他のヒントは、「スイープとプルーン」アルゴリズムを

使用の木歓迎されていますか。