PyMel Maya Python — установить совместное местоположение

Я очень новичок в PyMel (раньше делал Python), и я обнаружил, что доступная документация очень сложна, а иногда просто остается MEL, а не Python. Очень неудобно что-либо здесь делать.

Я ищу способ установить абсолютное местоположение одного из моих суставов, а также ориентацию его кости.

Соединение, которым я хочу манипулировать, находится следующим образом:

theJoint = ls("LeftArm")[0]

Теперь используя

theJoint.setAngleX(45)

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

Я не могу использовать какие-либо методы setPositionX() или setTransform(X), поэтому мне интересно, нахожусь ли я вообще в нужном месте.

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


person He.Kin    schedule 21.03.2017    source источник


Ответы (1)


Когда вы устанавливаете атрибут, используя объекты атрибутов pymels (синтаксис вроде mynode.rotate.set(), вы вводите числа непосредственно в атрибуты, но числа — это просто числа, которые интерпретируются ниже по течению, как если бы вы ввели их в поле канала.

Вы можете использовать версии Pymel команд xform, move и rotate для установки абсолютных значений. Эти команды работают так же, как и в обычных документах Maya. Этот. например, повернет Joint2 на 0,0,10 в мировом пространстве, независимо от того, что делает его родитель:

import pymel.core as pm
example = pm.PyNode('joint2')
pm.rotate(example, [0,0,10], a=True, ws=True) 

Флаг a является «абсолютным», а ws — «мировым пространством» (документы здесь для ротации). move и xform также имеют параметры для абсолютных значений и значений мирового пространства. Таким образом, чтобы разместить косяк в мировом пространстве, было бы

 pm.move(example, [1,2,3], a=True, ws=True)

xform немного сложнее. и имеет больше опций, но делает то же самое, а также позволяет вам устанавливать точки поворота.

person theodox    schedule 26.03.2017