C++ 转换OpenGL';GLS旋转到Maya';s cmds.rotate
我有一个C++/OpenGL程序,它可以在不同的旋转角度创建许多圆柱体,使它们看起来都是连接在一起的。我添加了一个导出方法来为Maya编写相同绘制方法的python脚本,以便加载脚本 我知道,当OpenGL创建并旋转圆柱体时,它会将圆柱体与Z轴对齐,并根据圆柱体的“基准”旋转和平移圆柱体 因此,在Maya转换过程中,我一直很小心,在任何转换之前移动枢轴,并将圆柱体与OpenGL的标准预先对齐(然后冻结转换,从而创建OpenGL基础) 所有的平移似乎都移动到了正确的位置,但是我担心我是否正确地进行了旋转函数之间的转换。我知道Maya和OpenGL都以度为单位进行旋转。但是,OpenGL中的功能是:C++ 转换OpenGL';GLS旋转到Maya';s cmds.rotate,c++,python,opengl,maya,C++,Python,Opengl,Maya,我有一个C++/OpenGL程序,它可以在不同的旋转角度创建许多圆柱体,使它们看起来都是连接在一起的。我添加了一个导出方法来为Maya编写相同绘制方法的python脚本,以便加载脚本 我知道,当OpenGL创建并旋转圆柱体时,它会将圆柱体与Z轴对齐,并根据圆柱体的“基准”旋转和平移圆柱体 因此,在Maya转换过程中,我一直很小心,在任何转换之前移动枢轴,并将圆柱体与OpenGL的标准预先对齐(然后冻结转换,从而创建OpenGL基础) 所有的平移似乎都移动到了正确的位置,但是我担心我是否正确地进行
glRotated(angle, x, y, z);
在Maya的Python中:
cmds.rotate(x-deg, y-deg, z-deg);
因此,我一直在做的是从OpenGL获取角度,并将其乘以Maya方法的给定轴:
cmds.rotate(angle * x, angle * y, angle * z);
我想这会管用,给我想要的。但旋转似乎仍在进行中。我找不到一个很好的天气解释,不管这是否能像我期望的那样工作。那么有人能确认这种关系吗?只有当旋转轴与其中一个主轴对齐时,这通常不起作用
旋转以轴+角度的形式给出,需要将其转换为Euler角度。你可以在阅读后手动执行此操作,例如在Wikipedia上,或者你可以构造一个mqaternion,使用setAxisAngle()方法(使用弧度,而不是度数),然后将其转换为MEulerAngle。我敢肯定,即使是Euler自己在处理旋转时也会时不时地感到困惑。:)