問題タブ [mouse-picking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - OpenGLでのレイキャスティングによるマウスピッキング?
OpenGL でのマウス ピッキングに関するこのチュートリアルに従おうとしていますが、適切に機能させることができません。
マウス座標からワールド空間座標を取得するという私の基本的な理解では、一連の逆行列を掛ける必要があります。次に、ローカル空間からワールド空間座標を取得するには、ローカル空間座標にモデル マトリックスを掛けます。しかし、取得した座標が一致しません。
マウス座標も正規化されているため、モデルのワールド座標を正規化しようとしましたが、そうであるかどうかはわかりません。
opengl - フレームバッファでレンダリングされたクワッドをマウスで選択できない
ポイント/クワッドをマウスでピックするのに苦労しています。間違った空間で座標を使用しているか、フレームバッファの位置/サイズを考慮していない可能性があります(メインウィンドウのサブウィンドウです)。
さまざまな異なる座標空間に変換し、モデル マトリックスも反転してみました。現在、ワールド空間に光線を投影し (うまくいけば正しく)、それをポイント (クワッド) の位置と比較しようとしています。ポイントはローカル空間で指定されていますが、エンティティは原点 (0f、0f、0f) でレンダリングされるため、ワールド空間で違いはないと思いますか?
ワールド空間でマウス レイを取得するには:
ポイント (11.25, -0.75) にカーソルを合わせると、光線座標は (0.32847548, 0.05527423) になります。ポイントの位置を正規化してみましたが、まだ一致しません。
何かを見落としている/見落としている、または単に座標系を誤って操作しているように感じます。どんな洞察でも大歓迎です、ありがとう。
詳細を編集してください:
クワッドの頂点は次のとおりです。
(-0.5f, 0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f, -0.5f)
行列をシェーダーにロードしています:
頂点シェーダーで gl_Position を計算する:
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 0.0, 1.0);
編集 2: Rabbid のコメントに基づいてさらに資料を読んだ後、コードを変更しました。ビューポート サイズを 2 で割る必要があるかどうかわかりません (Retina MacBook ディスプレイを使用しています)。
c++ - OpenGL 3 でマウス ピッキングを実行しようとすると、正しくないベクトルが取得される
カーソルが画面上にある場所への方向ベクトルを取得しようとしていますが、実際の値ではなく大きな値が得られます。マウスピッキングを行うと、次のようなワールド座標の数値が非常に小さくなります
私はここで何か間違ったことをしていますか、私はこのコードをここから適応させました。glm::intersectLineTriangle()
線が問題の三角形の世界座標を指しているかどうかをテストするために使用しています。
関連するコードは次のとおりです。