0

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

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

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

但是我发现它并没有像我预期的那样旋转,因为文档说旋转顺序是 yxz。

我想将顺序更改为 xyz。谁能告诉我怎么做?

4

1 回答 1

2

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

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

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

  • x 轴右侧为正,左侧为负
  • y轴向上为正,向下为负
  • z 轴正向靠近您,负向远离您

设想那三条轴线,甚至更好的是一根绳子。

如果您绕 x 轴旋转,请从左到右水平握住绳子:物体会朝您旋转或远离您旋转。

如果您绕 y 轴旋转,请从脚到头垂直握住绳子:物体会像旋转门一样旋转。

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

- 更新

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

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

于 2012-01-05T08:01:50.163 回答