Похоже, у вас почти все было, но только некоторые синтаксические ошибки с командой.Я знаю, что ваш код пытается передать только из одного соединения, но этот пример будет проходить по всем соединениям, которые соответствуют правильному именованию.Пока имена oldJnt правильно совпадают с именами newJnt, он должен передавать веса от правильного:
import maya.cmds as cmds
# Select all vertexes from your mesh.
cmds.select("pSphere1.vtx[*]")
# We use sorted so that if the objects are names properly, the order of the objects should match indexes.
old_objs = sorted(cmds.ls("*_oldJnt")) # Get a list of all of your old joints.
new_objs = sorted(cmds.ls("*_newJnt")) # Get a list of all of your new joints.
# Use zip to loop through both old and new joints.
for old_jnt, new_jnt in zip(old_objs, new_objs):
cmds.skinPercent("skinCluster1", tmw=[old_jnt, new_jnt]) # Transfer weights from the old joint to the new one.
# Clear vertex selection.
cmds.select(clear=True)
Я использую здесь cmds
, но вы также можете переключить его на pymel
, если выкак.
В документах упоминается, что он будет передавать веса только из выбранных вершин, поэтому в этом примере я просто выбираю все вершины.
Это было проверено со сферой и 2 старыми соединениями в 2новые суставы.