Three.js相机向上或向下倾斜并保持水平



camera.rate.y以可预测的方式向左或向右平移。

当camera.rotate.y为180度时,camera.旋转.x可预测地向上或向下看。

但是,当我将camera的值更改为某个新值时,旋转x,地平线就会旋转。

我一直在寻找一种算法来调整camera.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中应用的,而不是按照指定的顺序。

在您的情况下,您可能会发现将rotation.order设置为"YXZ"更直观,这相当于"航向、俯仰和滚转"。

有关欧拉角的更多信息,请参阅维基百科的文章。Three.js遵循Tait–Bryan惯例,如文章所述。

three.js r.61

我几天来一直在寻找相同的信息,诀窍是:使用常规的rotateX向上/向下查找,但使用rotateOnWorldAxis(new THREE.Vector3(0.0, 1.0, 0.0), angle)进行水平旋转(https://discourse.threejs.org/t/vertical-camera-rotation/15334)。

最新更新