从Maya C ++ API中的转换节点获取网格节点

时间:2015-05-22 10:13:12

标签: c++ plugins mesh maya

我想在Maya中激活的变换节点下获取一个shape / mesh对象。 如果我在Maya中选择并对象(例如多边形球),则在调用getActiveSelectionList方法时,它会返回变换节点,而不是形状/网格。

我正在疯狂阅读API类(MDagPath, MSelectionList, MFnDependencyNode)以及实现这一目标的方法,但我找不到办法。

所以,我想通过C ++ API在Maya GUI中获取所选/活动多边形对象的信息(顶点坐标)。

1 个答案:

答案 0 :(得分:4)

您希望获得导致转换的MDagPath,然后使用.extendToShape.extendToShapeDirectlyBelow()来获取形状节点。然后你需要从形状中获得MFnMesh并使用它来到达顶点。

这是python版本,这是我所有的方便。除了语法之外,它在C ++中的工作方式也是一样的:

# make a selectionList object, populate ite
sel_list = MSelectionList()
MGlobal.getActiveSelectionList(sel_list)

# make a dagPath, fill it using the first selected item
d = MDagPath()
sel_list.getDagPath(0,d)

print d.fullPathName()
# '|pCube1" <- this is the transform
d.extendToShape()
print d.fullPathName()
#  "|pCube1|pCubeShape1" < - now it points at the shape

# get the dependency node as an MFnMesh:
mesh = MFnMesh(d.node())

# now you can call MFnMesh methods to work on the object:
print mesh.numVertices()
# 8