Camera Three.js摄像头向上或向下倾斜,并保持水平

Camera Three.js摄像头向上或向下倾斜,并保持水平,camera,rotation,three.js,Camera,Rotation,Three.js,摄影机。旋转。y以可预测的方式向左或向右平移 当camera.rotate.y处于180度时,camera.rotate.x可以预测地向上或向下查看 但是,当我将camera.rotate.y的值更改为某个新值,然后更改camera.rotate.x的值时,地平线会旋转 我已经寻找了一种算法来调整相机后的水平旋转。rotate.x已更改,但尚未找到它。在three.js中,对象的方向可以通过其Euler旋转向量object.rotation指定。旋转向量的三个分量分别表示围绕对象内部x轴、y轴和

摄影机。旋转。y以可预测的方式向左或向右平移

当camera.rotate.y处于180度时,camera.rotate.x可以预测地向上或向下查看

但是,当我将camera.rotate.y的值更改为某个新值,然后更改camera.rotate.x的值时,地平线会旋转


我已经寻找了一种算法来调整相机后的水平旋转。rotate.x已更改,但尚未找到它。

在three.js中,对象的方向可以通过其Euler旋转向量
object.rotation
指定。旋转向量的三个分量分别表示围绕对象内部x轴、y轴和z轴的旋转(以弧度为单位)

执行旋转的顺序由
object.rotation.order
指定。默认顺序为“XYZ”-先绕x轴旋转,然后绕y轴旋转,然后绕z轴旋转

旋转是相对于对象的内部坐标系而不是世界坐标系执行的。这很重要。因此,例如,发生x轴旋转后,对象的y轴和z轴通常不再与世界轴对齐。以这种方式指定的旋转不是唯一的

例如,如果在代码中指定

camera.rotation.y = y_radians;  // Y first
camera.rotation.x = x_radians;  // X second
camera.rotation.z = 0;
旋转应用于对象的
旋转。顺序
,而不是您指定的顺序

在您的例子中,您可能会发现将
rotation.order
设置为“YXZ”更直观,这相当于“heading、pitch和roll”

有关Euler角度的详细信息,请参见。正如本文所解释的,Three.js遵循Tait–Bryan惯例


three.js r.61

我已经找了几天相同的信息了,诀窍是:使用常规的rotateX来上下查看,但是使用RotateWorldAxis(新的三个矢量3(0.0,1.0,0.0),angle)来进行水平旋转()。

你的评论有效。在摄影机对象初始化时,我添加了以下代码行,
camera.eulerOrder=“YXZ”现在是
camera.rotation.order='YXZ'你的意思是“偏航、俯仰和滚转”?:)