我正在使用 three.js 轨道控件并尝试让天空盒跟随相机的位置。在互联网上搜索后,我没有找到合适的答案。
我的问题很简单 - 如何在使用轨道控制时检索相机的坐标,以下不起作用:
skybox.position.x = camera.position.x; //Moving skybox with camera
skybox.position.z = camera.position.z; //Moving skybox with camera
skybox.position.y = camera.position.y; //Moving skybox with camera
x 和 z 坐标值不正确。我也试过:
orbit_controls.object.target
相反,但这会导致 x 和 z 返回不正确值的类似不正确行为。
看似明显的控制机制要求似乎非常难以做到。
最佳答案
由于没有得到关于 SO 的答案,我做了一些额外的测试,我发现需要进行坐标系转换才能检索相机的正确坐标。
以下将检索相机在标准世界 (x,y,z) 空间中的当前位置并将其应用于天空盒。
newZ = -(camera.position.x * Math.cos(5.49779)) - (camera.position.z * Math.sin(5.49779));
newX = (camera.position.x * Math.cos(0.78)) + (camera.position.z * Math.sin(0.78));
skybox.position.x = newX; //Moving skybox with camera
skybox.position.z = newZ; //Moving skybox with camera
skybox.position.y = camera.position.y; //Moving skybox with camera
因为我在其他地方找不到这个答案,我希望这对其他人有用,它解决了我的问题。
关于javascript - three.js 使用轨道控件获取相机位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33962745/