0
我正在嘗試將基本鼠標集成到使用Collada對象的小型演示中。我能夠獲得正確的鼠標x和y,但我不知道如何將它們轉換爲用於該對象的座標。將鼠標位置翻譯爲對象座標
我希望GLGE功能duck.setLoc(mousepos.x, mousepos.y)
可以從像素轉換,但事實並非如此。
如何將2D mousepos像素轉換爲3D點需要做些什麼?
我正在嘗試將基本鼠標集成到使用Collada對象的小型演示中。我能夠獲得正確的鼠標x和y,但我不知道如何將它們轉換爲用於該對象的座標。將鼠標位置翻譯爲對象座標
我希望GLGE功能duck.setLoc(mousepos.x, mousepos.y)
可以從像素轉換,但事實並非如此。
如何將2D mousepos像素轉換爲3D點需要做些什麼?
如果您有屏幕座標點(x0,y0),您可以取消它們的投影並使用3d計算它的座標,例如z-coord設置爲臨近剪裁窗格。 就像你會爲(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。