Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从玛雅文化遗址C++ API中的转换节点获取网格节点_C++_Plugins_Mesh_Maya - Fatal编程技术网

从玛雅文化遗址C++ API中的转换节点获取网格节点

从玛雅文化遗址C++ API中的转换节点获取网格节点,c++,plugins,mesh,maya,C++,Plugins,Mesh,Maya,我想在Maya中激活的变换节点下获取形状/网格对象。 如果我在Maya中选择一个对象(例如多边形球体),调用getActiveSelectionList方法时,它将返回一个变换节点,而不是形状/网格节点 我正在疯狂地阅读API类MDagPath、MSelectionList、MFnDependencyNode和可以实现这些功能的方法,但我找不到一种方法 >,我想通过C++ API获得MayaGUI中一个选择/激活的多边形对象的信息顶点坐标。 < p>您希望得到一个导致转换的MdAGPATH,然

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

我正在疯狂地阅读API类MDagPath、MSelectionList、MFnDependencyNode和可以实现这些功能的方法,但我找不到一种方法


<> >,我想通过C++ API获得MayaGUI中一个选择/激活的多边形对象的信息顶点坐标。

< p>您希望得到一个导致转换的MdAGPATH,然后使用.ExpDuttoHAPE或.ExpDeToStApEdEdTrimTyLIN得到形状节点。然后,需要从形状中获取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

谢谢你,西奥多。这正是我想要的。如果我使用方法mesh.getPointsmypoints,MSpace::kwold,那么对于单个多平面中的每个顶点,应该在世界空间中的检索位置都是0。如果使用默认的MSpace,则可以正确获取本地位置。你知道为什么会发生这种情况吗?例如,如果在定义平面的两个轴上有一个缩放为零的退化变换,就可能发生这种情况。你正在做C++——MSTATE返回什么?谢谢你的建议。它返回错误:kInvalidParameter:必须具有DAG路径才能进行世界空间变换。所以我必须使用MFnMesh fnmeshdagpath而不是meshnode,以便在使用fnmesh.getPoints时获得全局坐标。。。