Euler.setFromRotationMatrix(matrix, order = "XYZ")
该方法是three.js中Euler类的一个实例方法,它根据给定的旋转矩阵(matrix)来设置Euler对象的旋转值。
matrix
: THREE.Matrix4
旋转矩阵
order
: String, optional
欧拉旋转顺序,默认是 "XYZ" 顺序,还可以是 "YXZ"、"ZXY"、"ZYX"、"YZX"或"XZY"。
无返回值
Euler.setFromRotationMatrix()
方法基于给定的旋转矩阵设置Euler对象的旋转值。应注意,欧拉角旋转顺序的默认顺序为 "XYZ"。
Euler对象的旋转值仅在使用quaternion进行旋转的情况下保持有效,使用标准矩阵进行旋转时可能会出现问题。
因此,在使用旋转矩阵构建对象时并不推荐直接设置其旋转值,而建议先通过THREE.Quaternion设置旋转值,再将其转换为Euler对象。
以下示例演示如何使用 Euler.setFromRotationMatrix()
方法从旋转矩阵构建Euler对象,并使用 Euler.toVector3()
方法获得Euler对象的旋转值。
注意:示例中旋转矩阵 mat
是在三维建模软件中预设的值。
const euler = new THREE.Euler();
const mat = new THREE.Matrix4().set(0.5, -0.5, -0.5, 0, 0.5, -0.5, 0.5, 0, -0.5, -0.5, 0.5, 0, 0, 0, 0, 1);
euler.setFromRotationMatrix(mat);
console.log(euler.toVector3()); // 输出: {x: 1.5707963267948966, y: 0.7853981633974484, z: -0.7853981633974484}
[1] three.js docs, Euler.setFromRotationMatrix(). https://threejs.org/docs/#api/en/math/Euler.setFromRotationMatrix