我试图将选定的对象枢轴移动到对象选定顶点的中心。
当我运行代码时,我没有收到任何错误,几乎所有内容都按预期工作,但是(obj)我所选对象的转轴似乎并没有将自己设置为定位器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]) )
快速需要一些帮助。 任何可以发现我失踪的额外眼睛的人都会非常感激。
答案 0 :(得分:2)
我认为主要问题是当你使用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]) )