我有一个C ++ / OpenGL程序,它可以在各种旋转时创建很多柱面,因此它们都显示为连接。我在一个导出方法上添加了为Maya编写相同绘制方法的python脚本,所以我可以加载脚本。
我知道当OpenGL创建并旋转圆柱体时,它会将它与Z轴对齐和它旋转并通过它的“基础”进行平移。
所以我一直小心我的Maya转换在任何转换之前移动枢轴,并且还要将柱子预先对齐到OpenGL的标准(然后冻结转换,从而创建OpenGL基础)。
翻译似乎都移动到了正确的位置,但我担心我是否正确地进行了旋转功能之间的转换。我知道Maya和OpenGL都是以度为单位进行旋转。但是,OpenGL中的函数是:
glRotated(angle, x, y, z);
在Maya的Python中:
cmds.rotate(x-deg, y-deg, z-deg);
所以我一直在做的是从OpenGL中取 angle 并将它乘以Maya方法的给定轴:
cmds.rotate(angle * x, angle * y, angle * z);
我认为这会起作用并给我我想要的东西。但旋转似乎仍然没有。我无法找到天气的良好解释,或者可能以我期望的方式工作。那么有人可以证实这种关系吗?
答案 0 :(得分:1)
只有当旋转轴与其中一个主轴对齐时,这一般不会起作用。
您的旋转以轴+角度给出,您需要将其转换为欧拉角。您可以在阅读之后手动执行此操作,例如在维基百科上,或者你可以构造一个MQuaternion,使用setAxisAngle()方法(使用弧度,而不是度数),然后将其转换为MEulerAngle。