Collada オブジェクトを使用して、基本的なマウスを小さなデモに統合しようとしています。正しいマウスの x と y を取得できますが、それらをオブジェクトに使用する座標に変換する方法がわかりません。
GLGE 関数duck.setLoc(mousepos.x, mousepos.y)
がピクセルから変換されることを期待していましたが、そうではありません。
2D マウスポス ピクセルを 3D ポイントに変換するにはどうすればよいですか?
画面座標 (x0、y0) を持つポイントがある場合は、それらを非投影にして、たとえば z 座標をクリッピング ペインの近くに設定して 3D で座標を計算できます。(x、y、near-z)の場合と同様に、射影行列でスクリーン座標を取得すると、逆のプロセスを実行します。
しかし、交点の座標を 3D で取得したい場合は、上記のサンプル ポイントとカメラの原点を使用して、シーンに光線を投射し、交点を計算できます。
擬似コード:
ray.origin = camera.position; // vec3
ray.direction = samplePoint.position - camera.position; //vec3
check_intersections_with_triangles_in_scene( scene, ray ); // retrieve 3d coord of intersection
たとえば、Three.js を使用している場合、これらの関数はすべて既に組み込まれているため、簡単に実行できます。このデモを確認してください: http://threejs.org/examples/webgl_interactive_draggablecubes.html。