maya api vs python命令:vertex normals

时间:2017-02-06 18:45:22

标签: python maya maya-api

我正在尝试在特定顶点提取网格对象的顶点法线。我注意到在使用python API而不是maya python命令时会得到不同的结果。

Python命令(给我想要的结果)

cmds.polyNormalPerVertex("<myshapename>.vtx[523]", q=True,normalXYZ=True)

maya python API调用(给我一个不同的结果)

# empty selection list
selectionList = om.MSelectionList()
selectionList.add(<myshapename>)

# create empty dag path object
dagPath = selectionList.getDagPath(0)

# get mesh 
mesh = om.MFnTransform(dagPath)

# get vertex normal
mesh.getVertexNormal(523, False, space=om.MSpace.kWorld)

当我尝试在一个顶点位于另一个对象的缝边上的对象上提取法线时,我注意到了这种差异。使用Normals > Average Normals菜单集中的Polygons在Maya中平均法线。

我知道没有示例对象很难,但我希望之前有人见过这个问题。

任何人都可以提供这种差异的可能解释吗?

1 个答案:

答案 0 :(得分:1)

我觉得你的cmds电话很幸运。 polyNormalPerVertex的通常行为是返回与vert关联的法线的所有 - 如果它是多个面的一部分,则将是同一个问题的多个答案。例如,在香草polyCube

将maya.cmds导入为cmds    cmds.polyNormalPerVertex(&#39; pCube1.vtx [0]&#39;,q = True,normalXYZ = True)    #结果:[ - 1.0,0.0,0.0,0.0,0.0,1.0,0.0,-1.0,0.0]#

因为vert是三个不同面的一部分。

getVertexNormal的API调用将返回平均法线according to the docs

如果你在两端使用vertexFaces你应该有更好的运气 - 那些不那么模糊。