Maya中多个对象的顶点中心在哪里?

时间:2017-04-27 14:02:21

标签: python maya

我想在Maya中找到来自多个对象的顶点选择的中心(按中心,我的意思是默认枢轴位置)。我认为这是centroid,但似乎这不会返回正确的坐标。

这是一个例子: enter image description here

我选择了四个顶点,每个球体的两个极点。红色是"中心"这个顶点,Maya放置默认枢轴,蓝色是我计算时的质心。

我的计算错误或者顶点的中心不是质心,无论如何这些显然不是相同的坐标。这是我的代码:

loc = cmds.spaceLocator ()[0]
vtxList = cmds.ls (sl = True, fl = True)

vtxPosSum = [0, 0, 0]
for vtx in vtxList:
    vtxPos = cmds.xform (vtx, q = True, ws = True, t = True)
    vtxPosSum[0] += vtxPos[0]
    vtxPosSum[1] += vtxPos[1]
    vtxPosSum[2] += vtxPos[2]

barycentre = [vtxPosSum[0] / len(vtxList),
              vtxPosSum[1] / len(vtxList),
              vtxPosSum[2] / len(vtxList)]

cmds.xform (loc, ws = True, t = barycentre)

所以我的问题是,如何从多个多边形中选择顶点时如何找到默认Maya轴的位置?

由于

2 个答案:

答案 0 :(得分:1)

This post可能对您有用。它显示以下内容:

centroid=SUM(pos*volume)/SUM(volume)

希望这有帮助!

答案 1 :(得分:1)

我认为玛雅在选择多个组件时会使用边界框的中心作为枢轴中心...我可能错了,但试一试,看看它是否是正确的位置:

import maya.cmds as mc

sel = mc.ls(sl=True)
bb = mc.exactWorldBoundingBox(sel)
pos = ((bb[0] + bb[3]) / 2, (bb[1] + bb[4]) / 2, (bb[2] + bb[5]) / 2)

pos 将是移动你的定位器(或者你正在测试的任何东西)的世界空间xyz位置