Python 2.7 Maya-居中对象轴心到定位器/簇

Python 2.7 Maya-居中对象轴心到定位器/簇,python-2.7,maya,maya-api,Python 2.7,Maya,Maya Api,我正在尝试将选定对象轴移动到选定顶点的中心 我已经定义了xform,但似乎无法将对象(定义为obj)轴移动到此点 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, w

我正在尝试将选定对象轴移动到选定顶点的中心

我已经定义了
xform
,但似乎无法将对象(定义为
obj
)轴移动到此点

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

这就是我所拥有的,任何能够发现我所缺少的东西的额外眼睛都将不胜感激。

您的
obj
需要是变换节点,但它是一个数组,其中每个元素都是相同的形状

试试这个:

import pymel.core as pm
bigNum = 1.0e+9
sel = pm.ls(sl=True, flatten=True)
min = pm.dt.Point(bigNum,bigNum,bigNum)
max =  pm.dt.Point(-bigNum,-bigNum,-bigNum)

for v in sel:
    p = pm.pointPosition( v )
    if p.x < min.x:
        min.x = p.x
    elif p.x > max.x:
        max.x = p.x
    if p.y < min.y:
        min.y = p.y
    elif p.y > max.y:
        max.y = p.y     
    if p.z < min.z:
        min.z = p.z
    elif p.z > max.z:
        max.z = p.z    

center = (min+max)*0.5

obj =  pm.listRelatives(pm.listRelatives(sel[0], p=True), p=True)
pm.xform (obj, piv=(center.x, center.y, center.z) , ws=True)
pm.spaceLocator(p=center)

pm.select(obj)
将pymel.core导入为pm
bigNum=1.0e+9
sel=pm.ls(sl=True,展平=True)
最小值=pm.dt.Point(bigNum,bigNum,bigNum)
max=pm.dt.Point(-bigNum,-bigNum,-bigNum)
对于sel中的v:
p=pm.点位置(v)
如果p.x最大值:
max.x=p.x
如果p.y最大y:
最大y=p.y
如果p.z最大z:
最大z=p.z
中心=(最小+最大)*0.5
obj=pm.listRelatives(pm.listRelatives(sel[0],p=True),p=True)
pm.xform(obj,piv=(center.x,center.y,center.z),ws=True)
pm.空间定位器(p=中心)
pm.选择(obj)
ls
flatten
标志将确保每个顶点在结果数组中都有一个条目。具有相邻索引的顶点将不会分组

它不会生成临时簇,而是迭代查找世界空间边界框,然后计算其中心

调用嵌套在另一个
listRelatives
中的
listRelatives
将获取与第一个顶点关联的变换节点。(假设所有选定顶点都在同一网格中)。

可能的重复