Skocz do zawartości

Maya 2016 - reset skin cluster'a

Featured Replies

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

  • Wyświetleń 1,7k
  • Created
  • Ostatniej odpowiedzi

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Account

Navigation

Szukaj

Szukaj

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.