我是cocos3d的新手,现在我遇到了一个问题。
在cocos3d中,我想旋转一个节点。我得到了x轴,y轴,z轴的角度,然后我使用属性:旋转来旋转,像这样:
theNodeToBeRotated.rotation = cc3v(x,y,z);
但是我发现它没有像我期望的那样旋转,因为文档说旋转顺序是y-x-z。
我想把顺序改为x-y-z。有人能告诉我怎么做吗?
您可能需要进一步澄清以下内容:"it didn't rotate as I expected"
OpenGL ES(以及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红皮书-它应该有一些建议给你。