0

基本的に、私がやりたいことは、モデルがある opengl ウィンドウのどこかをクリックしてから、オブジェクトを選択したかどうかを確認するための何らかのチェックを行うことだけです。これを行う方法がわかりません。openglは理解していますが、数学は理解していません。ソースコードがあればよいでしょう。

4

2 に答える 2

1

別のアプローチは、選択可能な各ジオメトリを異なるIDの選択バッファーでレンダリングしてから、マウスの下にあるIDを取得することです。

于 2012-07-23T12:41:34.683 に答える
1

基本的な「やること」はかなり単純です。ビューから 3D ワールドに光線を放ち、それをオブジェクトと交差させます。

非常に単純なアプローチは次のようになります。

  • クリックされたビューポートの位置を特定します。
  • ビュー/投影行列を逆にするか、他の方法を使用して、クリックしたポイントを通るカメラからの線を決定します。カメラの視野がわかっている場合は、マトリックスをスキップできます。カメラの「前方ベクトル」を使用し、それに応じて転置します (たとえば、ビューポートの左端をクリック -> 水平視野の半分だけベクトルを回転させます)。
  • その線をオブジェクトの境界ボックスと交差させて、クリックされたアイテムを特定します (最も近いものを使用して、最も手前のオブジェクトを特定します)。

ここではかなり精巧な実装例を 1 つ見つけることができます(これは GL_SELECTION を使用しています。別のアプローチです)。

ここで別の解決策を見つけることができます(数学的な方法を使用)。

于 2012-07-22T17:39:03.593 に答える