Я пытаюсь извлечь нормали вершины меш-объекта в определенной вершине. Я заметил, что я получаю разные результаты при использовании API python вместо команд майя python.maya api vs команды python: vertex normals
команды Python (дает мне результат я хочу):
cmds.polyNormalPerVertex("<myshapename>.vtx[523]", q=True,normalXYZ=True)
Майя питон 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
.
Я знаю, что это трудно без примера объекта, но я надеюсь, что кто-то видел эту проблему раньше.
Может ли кто-нибудь дать возможное объяснение этому несоответствию?
ОК, спасибо за ваш ответ. Однако даже усреднение результатов из 'polyNormalPerVertex' не равно вектору, возвращаемому' getVertexNormal' (и я пробовал все комбинации параметров). Разве они не должны быть одинаковыми? – user2635364
Они должны быть одинаковыми, если вы выберете правильную функцию взвешивания - но это будет пересчитано каждый раз, когда вы спрашиваете, и может измениться, если, например, вы перемещаете верт на другой стороне того же лица. – theodox