Javascript 如何通过鼠标移动事件获取相机位置,并在three.js中转换为屏幕坐标?

Javascript 如何通过鼠标移动事件获取相机位置,并在three.js中转换为屏幕坐标?,javascript,google-maps-api-3,three.js,mouseevent,Javascript,Google Maps Api 3,Three.js,Mouseevent,实际上,我不知道这是否可能,但我想通过鼠标移动事件获得我的相机位置,并将它们转换为屏幕坐标。更详细地说,我试图用鼠标移动我的球体对象,并试图用鼠标移动获得相应的新相机位置,并希望在谷歌地图上更新对象位置。我找到了一些关于如何将三维对象位置转换为二维的来源,但我不确定它是否适合我的场景 [我在评论部分为下面的问题添加了解决方案,我希望它对遇到类似问题的人有用。请查看下面的两个链接]我想,你想在谷歌地图上显示你所看到的可能带有地球纹理的点,谷歌地图需要纬度和经度。对我来说,使用二维屏幕坐标似乎是一种

实际上,我不知道这是否可能,但我想通过鼠标移动事件获得我的相机位置,并将它们转换为屏幕坐标。更详细地说,我试图用鼠标移动我的球体对象,并试图用鼠标移动获得相应的新相机位置,并希望在谷歌地图上更新对象位置。我找到了一些关于如何将三维对象位置转换为二维的来源,但我不确定它是否适合我的场景


[我在评论部分为下面的问题添加了解决方案,我希望它对遇到类似问题的人有用。请查看下面的两个链接]

我想,你想在谷歌地图上显示你所看到的可能带有地球纹理的点,谷歌地图需要纬度和经度。对我来说,使用二维屏幕坐标似乎是一种奇怪的方法

您的相机可能位于位于坐标系中心的球体周围。我会把摄像机的位置转换成极坐标/球坐标,这与角度和半径无关。然后你几乎得到了拉长

从相机位置x、y、z的转换:

您需要在公式和图形中交换y和z,因为在three.js中y向上,可能需要反转z

现在,你需要转换φ,范围从0到2*PI,θ0到PI,经度-180°到180°,纬度-90°到90°,这应该很容易

球体上的格林威治子午线应朝向正x轴


如果我错了,请纠正我。

至少你应该包括适当的依赖项,以便可以执行小提琴。对不起,托马斯,我对JSFIDLE不太了解,这就是为什么我用文字解释了一切,如果你还需要什么,我甚至可以详细解释。如果你能帮助我,那将是非常棒的。请不要绕过jsfiddle.net警告。相反,听从建议,编辑你的帖子,将你所描述的问题的一部分包括在内。我已经发布了我针对我所面临的问题的解决方案。我希望这能更有效。Matt,krygerThanks Brakebein这是我要找的,你的推荐信帮了我很多…根据推荐信,我找到了问题的解决方案。为了使它更简单,问题是当我的鼠标移动事件被触发时,我应该同时更新我的Webgl和地图,反之亦然。我正在共享两个转换函数,这两个函数为我实现了这一点。当在我的Webgl应用程序中触发鼠标移动事件时,此函数将更新我在地图上的位置,反之亦然