3

正如标题所示,我想在 ThreeJS 中移动相机。我目前让相机在 mousedown 上移动,使其围绕它看起来的点,我想让键盘控制在 x 和 z 中移动相机,从而移动它看起来的点以及相机的位置。lookAt 目标当前为 0,0,0。

尝试过translateXtranslateZ它会相对于它自己的倾斜和角度移动相机位置。因此,向下看,“向前”会使相机在世界 Y 轴上下降,我只想在世界 X 和 Z 中移动它。如果重要的话,相机就是透视,滚轮设置了轨道圆的半径。版本是 r55。

这是根本不移动相机的当前代码(主要从示例中复制)。

if (userMouse.isDown){
    theta = - ( ( userMouse.position.x - userMouse.down.position.x ) * userMouse.acceleration ) +  userMouse.down.theta;
    phi = ( ( userMouse.position.y - userMouse.down.position.y ) * userMouse.acceleration ) + userMouse.down.phi;
    phi = Math.min( 160, Math.max( 20, phi ) );
}

camera.position.x = userCam.radious * Math.sin( theta * Math.PI / 360 ) * Math.cos( phi * Math.PI / 360 );
camera.position.y = userCam.radious * Math.sin( phi * Math.PI / 360 );
camera.position.z = userCam.radious * Math.cos( theta * Math.PI / 360 ) * Math.cos( phi * Math.PI / 360 );
camera.lookAt(userCam.target);
camera.updateMatrix(); 

我查看了示例并搜索了 Internet,但没有找到此设置。我的猜测是我会使用一些 transformWorldMatrix 或使用相机的旋转来获取方向,然后添加一个运动值。

我敢肯定它不是非常棘手,我只是无法绕开它。所以; 我将如何在世界 X 和 Z 中移动相机的位置?对不起,如果这是一个菜鸟问题。

4

0 回答 0