Skocz do zawartości

Maya 2016 - reset skin cluster'a


Rekomendowane odpowiedzi

Napisano

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

  • Odpowiedzi 0
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Popular Days

Top Posters In This Topic

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ę



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności