#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]) )