Maya Python - 将对象枢轴设置为选择中心

时间:2016-10-06 17:44:49

标签: python python-2.7 maya

我试图将选定的对象枢轴移动到对象选定顶点的中心。

当我运行代码时,我没有收到任何错误,几乎所有内容都按预期工作,但是(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]) )

快速需要一些帮助。 任何可以发现我失踪的额外眼睛的人都会非常感激。

1 个答案:

答案 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]) )