maya api vs python命令:顶点法线
我试图提取网格对象在特定顶点的顶点法线。我注意到,当使用python API而不是maya python命令时,会得到不同的结果 Python命令(提供我想要的结果):maya api vs python命令:顶点法线,python,maya,maya-api,Python,Maya,Maya Api,我试图提取网格对象在特定顶点的顶点法线。我注意到,当使用python API而不是maya python命令时,会得到不同的结果 Python命令(提供我想要的结果): cmds.polyNormalPerVertex("<myshapename>.vtx[523]", q=True,normalXYZ=True) # empty selection list selectionList = om.MSelectionList() selectionList.add(<mys
cmds.polyNormalPerVertex("<myshapename>.vtx[523]", q=True,normalXYZ=True)
# 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)
cmds.polynormalServerTex(“.vtx[523]”,q=True,normalXYZ=True)
maya python API调用(给我一个不同的结果):
cmds.polyNormalPerVertex("<myshapename>.vtx[523]", q=True,normalXYZ=True)
# 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)
#空选择列表
selectionList=om.MSelectionList()
selectionList.add()
#创建空dag路径对象
dagPath=selectionList.getDagPath(0)
#获取网格
网格=om.MFnTransform(dagPath)
#获取顶点法线
getVertexNormal(523,False,space=om.MSpace.kWorld)
我在尝试提取顶点位于与另一个对象的接缝边界上的对象上的法线时注意到了这种差异。已使用多边形
菜单集中的法线>平均法线
在maya中对法线进行平均
我知道没有示例对象是很困难的,但我希望有人以前见过这个问题
有人能为这种差异提供一个可能的解释吗?我想你刚刚幸运地接到了cmds电话。
polynormalServerTex
的通常行为是返回与顶点相关的所有法线——如果顶点是多个面的一部分,则将是同一问题的多个答案。例如,在香草polyCube上
将maya.cmds作为cmds导入
cmds.polynormalServerTex('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调用将返回平均正常值
如果在两端都使用顶点面,您的运气会更好,因为它们不那么模棱两可。好的,谢谢您的回答。但是,即使对polynormalServerTex
的结果求平均值,也不等于getVertexNormal
返回的向量(我已经尝试了所有参数组合)。它们不应该是相同的吗?如果你选择了正确的加权函数,它们应该是相同的——但是每次你询问时都会重新计算,如果你在同一个面的另一侧移动一个顶点,它们可能会改变。