Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 转换OpenGL';GLS旋转到Maya';s cmds.rotate_C++_Python_Opengl_Maya - Fatal编程技术网

C++ 转换OpenGL';GLS旋转到Maya';s cmds.rotate

C++ 转换OpenGL';GLS旋转到Maya';s cmds.rotate,c++,python,opengl,maya,C++,Python,Opengl,Maya,我有一个C++/OpenGL程序,它可以在不同的旋转角度创建许多圆柱体,使它们看起来都是连接在一起的。我添加了一个导出方法来为Maya编写相同绘制方法的python脚本,以便加载脚本 我知道,当OpenGL创建并旋转圆柱体时,它会将圆柱体与Z轴对齐,并根据圆柱体的“基准”旋转和平移圆柱体 因此,在Maya转换过程中,我一直很小心,在任何转换之前移动枢轴,并将圆柱体与OpenGL的标准预先对齐(然后冻结转换,从而创建OpenGL基础) 所有的平移似乎都移动到了正确的位置,但是我担心我是否正确地进行

我有一个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获取角度,并将其乘以Maya方法的给定轴:

cmds.rotate(angle * x, angle * y, angle * z);

我想这会管用,给我想要的。但旋转似乎仍在进行中。我找不到一个很好的天气解释,不管这是否能像我期望的那样工作。那么有人能确认这种关系吗?

只有当旋转轴与其中一个主轴对齐时,这通常不起作用


旋转以轴+角度的形式给出,需要将其转换为Euler角度。你可以在阅读后手动执行此操作,例如在Wikipedia上,或者你可以构造一个mqaternion,使用setAxisAngle()方法(使用弧度,而不是度数),然后将其转换为MEulerAngle。

我敢肯定,即使是Euler自己在处理旋转时也会时不时地感到困惑。:)