我希望沿着所有三个轴旋转图像,以便以适当的顺序考虑所有旋转。
使用Three Js
库并且旋转似乎沿着一个轴工作,而三个轴的旋转是异常的。我已经看到了一些关于使用四元数来旋转以避免万向节锁定的想法,我尝试了Euler,但它没有成功。
sphericImageMesh _ 是我的球体, this.getRollDeg() 是获取相机给出的滚动的方法
我尝试的是以下内容:
// var euler = new THREE.Euler( - THREE.Math.degToRad(this.getRollDeg()), - THREE.Math.degToRad( this.getHeadingDeg()) , - THREE.Math.degToRad(this.getPitchDeg()), 'XYZ' );
// this.sphericImageMesh_.setRotationFromEuler(euler);
// this.sphericImageMesh_.rotateZ(THREE.Math.degToRad(-this.getPitchDeg()));
// this.sphericImageMesh_.rotateX(THREE.Math.degToRad(-this.getRollDeg()));
this.sphericImageMesh_.rotateY(THREE.Math.degToRad(-this.getHeadingDeg()));
我见过使用 Quaternions
和 MatrixX4
不知道如何应用它。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以尝试重新排序轮换。我认为它默认为XYZ,但我发现YXZ或YZX更直观。使用n.rotation.order(' YXZ');并且看它是否表现得更接近你的想法。如果你正在做一个+ Z向前的flightim,这将更直观地工作。你偏航,然后投球,然后滚动。