2013-05-21 75 views
2

我需要绕x和z轴旋转钻石(请参阅附件)。当单独旋转(意味着我只设置rotation.x或rotation.z)时,旋转看起来很好,并且可以工作。但是,当我同时设置了旋转(x和z)旋转看起来是这样的:threejs旋转x和z单独工作,但一起失败

diamond rotation fail

难道我错过了什么?是不知何故对象本地坐标系旋转,现在围绕2轴旋转失败?

diamond.position = brilliantPositions[i][0]; 
diamond.rotation = brilliantPositions[i][1]; 
this.frames.arrangementMesh.add(diamond); 

预先感谢暗示 亲切的问候 罗马和帕特里克

+2

参见[这](http://stackoverflow.com/questions/14774633/how-to-rotate-an-object-and-reset-its-rotation-to-zero/14776900#14776900)解释欧拉旋转在three.js r.58。 – WestLangley

回答

5

欧拉订单确实为我们解决了问题。在我们的情况下,我们必须做下面的事情

diamond.eulerOrder = 'ZYX'; 

为了让计算采取正确的方式。非常感谢!

Here's more information about euler order

PS:我不能接受的答案WestLangley的评论,因此我只是调升它,转贴这里的解决方案

+0

现在我可以在8小时内接受我自己的答案oO这东西很奇怪...我会在8小时后回来然后 – Doidel

+0

这些天它被重新命名了。我认为rotation.order是新的属性 – Doidel

1

我会建议使用的lookAt()函数,然后其中一个轴周围旋转应用。对于几乎任何类型的太空旋转而言,这应该足够好。

相关问题