将鼠标位置转换为对象坐标



我正在尝试使用Collada对象将基本的鼠标集成到一个小演示中。我能够得到正确的鼠标x和y,但是我不知道如何将它们翻译成用于对象的坐标。

我希望glge函数 duck.setLoc(mousepos.x, mousepos.y)能从像素中转换,但事实并非如此。

我该怎么做才能将2D Mousepos像素转换为3D点?

如果您具有屏幕坐标(x0,y0)的点,则可以将它们取消对其进行,并将其计算为3D的坐标,例如,例如,z涂层设置为靠近夹层窗格。就像(x,y,近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

例如,如果您使用的是所有这些功能,则所有这些功能都已内置,因此这是一个小菜一碟。检查此演示:http://threejs.org/examples/webgl_interactive_draggablecubes.html。

最新更新