我正在尝试使用Object3D
旋转加载到OBJMTLLoader
中的网格。
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
没有?
发布于 2015-04-09 10:48:51
在加载网格时(在尝试将它绕x轴旋转之前),我将它绕y轴旋转90度。由于默认的欧拉顺序(即XYZ
),本地轴不再对应于世界轴。
obj.eulerOrder = 'YXZ';
使用上述代码行之前,围绕y轴旋转网格解决了问题。
对欧拉顺序的一个很好的解释可以找到here。
https://stackoverflow.com/questions/29542627
复制相似问题