0

我有一个 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);

我认为这会起作用并给我想要的东西。但旋转似乎仍然关闭。我找不到一个很好的天气解释,或者这不能按我预期的方式工作。那么任何人都可以确认这种关系吗?

4

1 回答 1

1

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

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

于 2013-04-03T18:25:23.267 回答