我是cocos3d的新手,现在我遇到了问题。
在cocos3d中,我想要旋转一个节点。我得到了x轴,y轴,z轴的角度,然后我使用了属性:旋转旋转,如下所示:
theNodeToBeRotated.rotation = cc3v(x,y,z);
但我发现它没有像我预期的那样旋转,因为文件说旋转顺序是y-x-z。
我想将顺序更改为x-y-z。谁能告诉我怎么样?
答案 0 :(得分:1)
您可能需要进一步澄清以下内容:“它没有像我预期的那样旋转”
OpenGL ES(和ergo,cocos3D)使用y轴作为向上,因此旋转顺序仍为x-y-z。如果要导入模型,则需要考虑3D编辑器的坐标系并进行相应调整。
如果您不习惯使用三维表示,从2D到3D的跳跃可能是一个重大障碍。在Cocos3D中:
设想这三条轴线,甚至更好,一条线。
如果您围绕x轴旋转,请从左向右水平握住琴弦:物体会朝向您或远离您旋转。
如果您围绕y轴旋转,请将琴弦从一个脚到另一个头部垂直握住:物体会像旋转门一样旋转。
如果绕z轴旋转,请将一端靠近胸部,另一端尽量远离:物体将像钟面一样旋转。
- 更新
我非常不建议更改旋转顺序,因为使用Y-X-Z是OpenGL标准。如果您想修改它,请查看CC3GLMatrixMath并查找 kmMat4RotationYXZ - 还有 kmMat4RotationZYX 。如果你想拥有X-Y-Z,你需要构建自己的旋转矩阵并在CC3GLMatrix和CC3GLMatrixMath中进行相应的更新。
作为参考,您还拥有OpenGL Red book - 它应该为您提供一些建议。