0

私は(凝固する)円の間の衝突検出ルーチンを作成しようとしています。これは非常に新しいことで、最初にすべての円をチェックする検出を行いました。今、私は、十分に近い円だけをより正確にチェックするために、ある種の境界ボックスを作成するというアイデアを思いつきました(凝固した円のグループがある場合はより効率的です)。

オブジェクトを選択して詳しく調べた後、より正確に検出するために、openGLは、ピクセルのオーバーラップを検出することで2つのオブジェクトがオーバーラップしているかどうかを確認できますか?

もう少し最適化された衝突検出を行うための他のヒントは大歓迎です:)

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

4

2 に答える 2

3

OpenGLにはそのような組み込み機能はありませんが、古い(<= 2.1)バージョンのOpenGLでは「フィードバック」レンダリングモードを無効にすることができる場合があります。

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

于 2012-04-26T21:35:39.107 に答える
0

ピクセルの重なりを検出することで、openGL が 2 つのオブジェクトが重なり合っているかどうかを確認できる方法がありますか?

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

OpenGL には、特定の領域でレンダリングされたオブジェクトのリストを取得するために使用できる選択バッファーがありますが、オーバーラップを検出するには、オーバーラップが発生する可能性のある領域を知る必要があるため、これは役に立ちません。

ステンシル バッファを悪用すると、オーバーラップするピクセルのリスト (および特定のピクセル上に描画されたオブジェクトの数) を取得できますが、そのためには、ステンシル バッファからデータを読み取り、すべてのピクセルを手動で反復処理する必要があります。単純に円の衝突を手動でチェックする方が高速 (10..100 倍) になります。8 個以下のオブジェクトを使用しない限り、ステンシル バッファーを使用して、ピクセル上に描画されたオブジェクトを特定することはできません。

もう少し最適化された衝突検出を行うためのその他のヒントを歓迎します

ツリーまたは「スイープ アンド プルーン」アルゴリズムを使用します。

于 2012-04-26T22:05:19.233 に答える