Three.js - 绕轴旋转 Object3D
Three.js - rotating an Object3D around an axis
我正在尝试使用 OBJMTLLoader
旋转加载到 Object3D
中的网格。
var obj = new THREE.Object3D();
// loading and stuff
obj.rotation.y += 0.1; //inside the update function
这可以正常工作,但仅适用于 y 轴和 z 轴。使用相同的代码,但对于 x 轴产生与绕 z 轴旋转相同的结果,但顺时针而不是逆时针。
不幸的是,我需要绕 x 轴旋转它。
var xAxis = new THREE.Vector3(1,0,0);
obj.rotateOnAxis( xAxis, 0.1 );
这会绕 x 轴旋转对象。
但是,我想补间对象的旋转,所以我需要一种方法来显式更改对象旋转的角度,而不是将其旋转特定的角度。
知道为什么 obj.rotation.y
和 obj.rotation.z
可以正常工作,但 obj.rotation.x
不能正常工作吗?
加载网格后(在尝试绕 x 轴旋转之前),我将其绕 y 轴旋转 90 度。由于默认的欧拉阶数(XYZ
),局部轴不再对应于世界轴。
obj.eulerOrder = 'YXZ';
在围绕 y 轴旋转网格之前使用上面的代码行解决了问题。
可以找到关于欧拉阶的很好的解释 here。
我正在尝试使用 OBJMTLLoader
旋转加载到 Object3D
中的网格。
var obj = new THREE.Object3D();
// loading and stuff
obj.rotation.y += 0.1; //inside the update function
这可以正常工作,但仅适用于 y 轴和 z 轴。使用相同的代码,但对于 x 轴产生与绕 z 轴旋转相同的结果,但顺时针而不是逆时针。
不幸的是,我需要绕 x 轴旋转它。
var xAxis = new THREE.Vector3(1,0,0);
obj.rotateOnAxis( xAxis, 0.1 );
这会绕 x 轴旋转对象。
但是,我想补间对象的旋转,所以我需要一种方法来显式更改对象旋转的角度,而不是将其旋转特定的角度。
知道为什么 obj.rotation.y
和 obj.rotation.z
可以正常工作,但 obj.rotation.x
不能正常工作吗?
加载网格后(在尝试绕 x 轴旋转之前),我将其绕 y 轴旋转 90 度。由于默认的欧拉阶数(XYZ
),局部轴不再对应于世界轴。
obj.eulerOrder = 'YXZ';
在围绕 y 轴旋转网格之前使用上面的代码行解决了问题。
可以找到关于欧拉阶的很好的解释 here。