Maya API vs Python 命令:顶点法线



我正在尝试提取网格对象在特定顶点处的顶点法线。我注意到在使用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)

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

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

谁能为这种差异提供可能的解释?

我认为

您只是幸运地获得了cmds电话。polyNormalPerVertex的通常行为是返回与顶点相关的所有法线 - 如果它是多个面的一部分,这将是同一问题的多个答案。 例如在香草polyCube

将 Maya.cmds 导入为 CMD cmds.polyNormalPerVertex('pCube1.vtx[0]', q=True, normalXYZ=True( # 结果: [

-1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -1.0, 0.0] #

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

根据文档,对getVertexNormal的 API 调用将返回平均正态。

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

最新更新