我正在使用Three.js。 我有一台相机可以通过以下方式移动和旋转:
camera.translateX()
:向左/向右移动camera.translateZ()
:前进/后退camera.rotateY()
:向左/向右旋转camera.rotateX()
:向上/向下旋转经过一些动作和旋转后,我想重置相机的上/下旋转(即它既不会看天空也不会看地板),以便水平观看,而保持当前的左/右旋转和位置。
我的问题是如何才能为camera.rotateX()
获得正确的价值?
或者有没有办法指定它应该旋转到的确切角度?
我试过camera.quaternion.setFromAxisAngle()
但似乎不是我想要的,因为它也会改变/设置相机的左/右旋转。
答案 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)< /强>
希望这会有所帮助。 还有一些可以提供帮助的工作示例:FirstPersonControls,PointerLockControls。