Kroopson Napisano 21 Kwiecień 2015 Napisano 21 Kwiecień 2015 Hej - w Maya 2016 zmieniło się troszkę działanie node'a skinCluster, który teraz keszuje sobie macierze pre-bind. Przez to modyfikacja atrybutów bindPreMatrix na pierwszy rzut oka nie wpływa na skina. Ten skrypt resetuje skin'a (ustawia aktualną pozycję szkieletu jako "początkową". Sprawdziłem na Maya 2015 i 2016. import maya.cmds as cmds def reset_skin_cluster(mayanode): historyNodes = cmds.listHistory(mayanode) for node in historyNodes: if cmds.nodeType(node) != "skinCluster": continue skinCl = node # influences = cmds.listConnections( skinCl + ".matrix" ) indices = cmds.getAttr(skinCl + ".matrix", mi=True) for indx in indices: influence = cmds.listConnections("%s.matrix[%i]" % (skinCl, indx)) if len(influence) > 0: mat = cmds.getAttr(influence[0] + ".worldInverseMatrix") cmds.setAttr("%s.bindPreMatrix[%i]" % (skinCl, indx), mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15], type="matrix") try: cmds.skinCluster(skinCl, e=True, recacheBindMatrices=True) except StandardError: pass
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się