我正在尝试在特定顶点提取网格对象的顶点法线。我注意到在使用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中平均法线。
我知道没有示例对象很难,但我希望之前有人见过这个问题。
任何人都可以提供这种差异的可能解释吗?
答案 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你应该有更好的运气 - 那些不那么模糊。