Maya Python — установка поворота объекта в центр выделения

#python #python-2.7 #maya

#python #python-2.7 #maya

Вопрос:

Я пытаюсь переместить точку поворота выбранного объекта в центр выбранных вершин объектов.

Когда я запускаю код, я не получаю никаких ошибок, и почти все работает по назначению, однако pivot (obj) моего выбранного объекта, похоже, не устанавливается в locator xform(piv).

 import maya.cmds as cmds

sel = cmds.ls(sl=True)
print sel
obj = cmds.ls(*sel, o=True)
print obj

selVerts = cmds.ls(sl=True)
tempClstr = cmds.cluster()
pos = cmds.xform(tempClstr[1], q=True, ws=True, rp=True)
loc = cmds.spaceLocator()
cmds.move(pos[0], pos[1], pos[2])
cmds.delete(tempClstr)

piv = cmds.xform (loc[1], piv=True, q=True, ws=True)
print piv
cmds.xform( obj, ws=True, piv=(piv[0], piv[1], piv[2]) )
  

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

Ответ №1:

Я думаю, что основная проблема заключалась в том, что при использовании obj = cmds.ls(*sel, o=True) он захватывал только узел формы объекта вместо его преобразования. Вы можете использовать cmds.listRelatives для получения преобразования фигуры. Вам также не нужно создавать локатор, поскольку кластер уже указывает вам позицию.

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

 import maya.cmds as cmds

sel = cmds.ls(sl=True)
shapes = cmds.ls(sel, o=True)
obj = cmds.listRelatives(shapes[0], f=True, parent=True)[0]

selVerts = cmds.ls(sl=True)
tempClstr = cmds.cluster()
piv = cmds.xform(tempClstr[1], q=True, ws=True, rp=True)
cmds.delete(tempClstr)

cmds.xform(obj, ws=True, piv=(piv[0], piv[1], piv[2]) )