Three.js沿其自己的特定轴设置摄像机(或Object3D)的旋转角度

时间:2015-10-09 09:23:56

标签: 3d camera rotation three.js

我正在使用Three.js。 我有一台相机可以通过以下方式移动和旋转:

  • camera.translateX():向左/向右移动
  • camera.translateZ():前进/后退
  • camera.rotateY():向左/向右旋转
  • camera.rotateX():向上/向下旋转

经过一些动作和旋转后,我想重置相机的上/下旋转(即它既不会看天空也不会看地板),以便水平观看,而保持当前的左/右旋转和位置

我的问题是如何才能为camera.rotateX()获得正确的价值? 或者有没有办法指定它应该旋转到的确切角度?

我试过camera.quaternion.setFromAxisAngle()但似乎不是我想要的,因为它也会改变/设置相机的左/右旋转。

1 个答案:

答案 0 :(得分:0)

您的相机旋转发生在自己的坐标系中,而不是世界坐标系中。这就是为什么使用 camera.rotateY()你可以相对于你的位置向左和向右旋转,无论它是什么。您当前的方向由Euler angles表示,它是三个顺序旋转。在您的每个旋转轴旋转后。

您可以尝试通过设置 camera.rotation.order =" YXZ&#34 ;; 来更改轮换顺序,然后设置 camera.rotation.y = 0

还知道向量 a = camera.position b = camera.getWorldDirection()你可以使用 camera.lookAt(bx,ay,bz)< /强>

希望这会有所帮助。 还有一些可以提供帮助的工作示例:FirstPersonControlsPointerLockControls