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