我正在尝试提取网格对象在特定顶点处的顶点法线。我注意到在使用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,你应该有更好的运气 - 这些不那么模棱两可。