如何更改cocos3d中的旋转顺序

时间:2012-01-05 02:54:11

标签: rotation cocos3d

我是cocos3d的新手,现在我遇到了问题。

在cocos3d中,我想要旋转一个节点。我得到了x轴,y轴,z轴的角度,然后我使用了属性:旋转旋转,如下所示:

theNodeToBeRotated.rotation = cc3v(x,y,z);

但我发现它没有像我预期的那样旋转,因为文件说旋转顺序是y-x-z。

我想将顺序更改为x-y-z。谁能告诉我怎么样?

1 个答案:

答案 0 :(得分:1)

您可能需要进一步澄清以下内容:“它没有像我预期的那样旋转”

OpenGL ES(和ergo,cocos3D)使用y轴作为向上,因此旋转顺序仍为x-y-z。如果要导入模型,则需要考虑3D编辑器的坐标系并进行相应调整。

如果您不习惯使用三维表示,从2D到3D的跳跃可能是一个重大障碍。在Cocos3D中:

  • x轴在右边是正的而在左边是负的
  • y轴向上向上,向下向负
  • z轴正向你移动而负向远离你

设想这三条轴线,甚至更好,一条线。

如果您围绕x轴旋转,请从左向右水平握住琴弦:物体会朝向您或远离您旋转。

如果您围绕y轴旋转,请将琴弦从一个脚到另一个头部垂直握住:物体会像旋转门一样旋转。

如果绕z轴旋转,请将一端靠近胸部,另一端尽量远离:物体将像钟面一样旋转。

- 更新

我非常不建议更改旋转顺序,因为使用Y-X-Z是OpenGL标准。如果您想修改它,请查看CC3GLMatrixMath并查找 kmMat4RotationYXZ - 还有 kmMat4RotationZYX 。如果你想拥有X-Y-Z,你需要构建自己的旋转矩阵并在CC3GLMatrix和CC3GLMatrixMath中进行相应的更新。

作为参考,您还拥有OpenGL Red book - 它应该为您提供一些建议。