三个JS Camera控制鼠标+ kbd

时间:2013-02-28 11:56:41

标签: three.js

正如标题所示,我想在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(); 

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

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

0 个答案:

没有答案