Преобразование glRotated OpenGL в cmds.rotate Майя

У меня есть программа на C ++ / OpenGL, которая создает много цилиндров при различных оборотах, поэтому все они выглядят связанными. Я добавил метод экспорта, чтобы написать скрипт на Python с теми же методами рисования для Maya, чтобы я мог загрузить скрипт.

Я знаю, что когда OpenGL создает и вращает цилиндр, он выравнивает его по оси Z а также он вращается и переводится как «основа».

Поэтому я был осторожен в своем преобразовании Maya, перемещая опорные точки перед любыми преобразованиями, а также, чтобы выровнять цилиндры в соответствии со стандартом OpenGL (и затем заморозить преобразование, создавая таким образом основу OpenGL).

Кажется, что все переводы перемещаются в правильное место, но я беспокоюсь, правильно ли я выполняю преобразование между функциями вращения. Я понимаю, что и Maya, и OpenGL вращаются в градусах. Тем не менее, функция в OpenGL:

glRotated(angle, x, y, z);

И в Питоне Майи:

cmds.rotate(x-deg, y-deg, z-deg);

Так что я занимаюсь угол из OpenGL и умножая его на заданную ось для метода Maya:

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

Я подумал, что это сработает и даст мне то, что я хочу. но повороты все еще кажутся выключенными. Я не могу найти хорошее объяснение погоды или нет мог работать так, как я ожидаю. Так кто-нибудь может подтвердить эти отношения?

0

Решение

Это не будет работать в целом, только если ось вращения выровнена с одной из главных осей.

Ваше вращение задается как ось + угол, и вам нужно преобразовать его в углы Эйлера. Вы можете сделать это вручную после прочтения, например, в Википедии, или вы можете создать MQuaternion, используйте метод setAxisAngle () (использует радианы, а не градусы), а затем конвертируйте его в MEulerAngle.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]