Ich versuche, die Vertexnormale eines Mesh-Objekts an einem bestimmten Eckpunkt zu extrahieren. Ich habe festgestellt, dass ich unterschiedliche Ergebnisse erhalte, wenn ich die Python-API anstelle der Maya-Python-Befehle verwende.maya api vs Python-Befehle: Vertex-Normalen
Python-Befehle (gibt mir das Ergebnis, das ich will):
cmds.polyNormalPerVertex("<myshapename>.vtx[523]", q=True,normalXYZ=True)
Die maya Python-API-Aufruf (gibt mir ein anderes Ergebnis):
# 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)
bemerkte ich diese Diskrepanz wenn versucht wird, Normalen an einem Objekt zu extrahieren, dessen Scheitelpunkte sich an der Nahtgrenze zu einem anderen Objekt befinden. Die Normalen wurden in Maya mit Normals > Average Normals
aus dem Polygons
Menüsatz gemittelt.
Ich weiß, dass es ohne ein Beispielobjekt schwierig ist, aber ich hoffe, dass jemand dieses Problem vorher gesehen hat.
Kann jemand eine mögliche Erklärung für diese Diskrepanz liefern?
ok, danke für deine Antwort. Aber selbst wenn die Ergebnisse von 'polyNormalPerVertex' gemittelt werden, entspricht das nicht dem von 'getVertexNormal' zurückgegebenen Vektor (und ich habe alle Kombinationen von Parametern ausprobiert). Sollten sie nicht gleich sein? – user2635364
Sie sollten identisch sein, wenn Sie die richtige Gewichtungsfunktion wählen - aber das wird jedes Mal neu berechnet, wenn Sie fragen, und könnte sich ändern, wenn Sie zum Beispiel ein Vert auf der anderen Seite desselben Gesichts bewegen. – theodox