Javascript 如何获得围绕世界轴3的旋转
我想从Object3D中根据世界坐标轴获得旋转值,例如Javascript 如何获得围绕世界轴3的旋转,javascript,three.js,Javascript,Three.js,我想从Object3D中根据世界坐标轴获得旋转值,例如 roation.x, rotation.y, rotation.z 现在我打电话的时候 object.rotation.x 我根据对象的局部轴获得旋转值 谢谢。要在世界轴上旋转对象,可以使用下面的功能 var rtWorldMatrix; function rotateAroundWorldAxis(object, axis, radians) { rtWorldMatrix= new THREE.Matrix4();
roation.x, rotation.y, rotation.z
现在我打电话的时候
object.rotation.x
我根据对象的局部轴获得旋转值
谢谢。要在世界轴上旋转对象,可以使用下面的功能
var rtWorldMatrix;
function rotateAroundWorldAxis(object, axis, radians)
{
rtWorldMatrix= new THREE.Matrix4();
rtWorldMatrix.makeRotationAxis(axis.normalize(), radians);
rtWorldMatrix.multiplySelf(object.matrix);
object.matrix = rtWorldMatrix;
object.rotation.getRotationFromMatrix(object.matrix, object.scale);
}
打电话
rotateAroundWorldAxisobjectToRotate,新三个。矢量31,0,0,90*Math.PI/180 对不起,这条线坏了 我也有同样的问题,直到我读了一些才找到解决办法。事情突然变得明朗起来 Three.js使用固有的Tait Bryan排序,也称为偏航、俯仰和滚动。这意味着相对于局部坐标系执行旋转。也就是说,对于“XYZ”顺序,旋转首先围绕世界X,然后围绕局部Y,现在可能不同于世界Y轴,然后围绕局部Z,可能不同于世界Z轴 一些实现可能使用外部正确顺序,在这种情况下,相对于世界坐标系执行旋转,因此对于顺序“XYZ”,旋转围绕world-X、world-Y和world-Z 这两种类型之间的转换相对简单,只需颠倒顺序和旋转,这样,角度a、b、c关于XYZ的固有three.js Euler旋转将等效于角度c、b、a关于ZYX的外在Euler旋转 如果需要按XYZ顺序获取世界旋转,我想您可以执行以下操作:
var worldRot = new THREE.Euler();
obj.getWorldRotation().copy(worldRot);
worldRot.reorder("ZYX");
// use worldRot.x, worldRot.y, worldRot.z
我问的是如何获取值,而不是如何旋转。无论如何,谢谢。我用四元数值来处理这个问题。@omarmaris如果你解决了这个问题,你能发布你的答案吗?