三.js 通过轨道控制获取相机位置

Sin*_*ity 4 javascript three.js

我正在使用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
Run Code Online (Sandbox Code Playgroud)

x 和 z 坐标的值不正确。我也试过:

orbit_controls.object.target
Run Code Online (Sandbox Code Playgroud)

相反,但这会导致类似的错误行为,x 和 z 返回不正确的值。

控制机制的一个看似显而易见的要求似乎非常难以做到。

Sin*_*ity 5

没有答案,所以我做了一些额外的测试,我发现需要坐标系转换来检索相机的正确坐标。

以下将检索相机在标准世界 (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
Run Code Online (Sandbox Code Playgroud)

由于我在其他任何地方都找不到这个答案,我希望这对其他人有用,它解决了我的问题。

  • 你介意解释一下你是如何得到这些数字的吗?:) 你是如何确定他们需要的? (4认同)