Frage

Ich brauche eine Funktion (Maya-Python) zu nennen, basierend auf Würfel rotationX. Dafür habe ich das Ereignis zu erfassen, programmatisch.

Ich habe versucht, mit while-Schleife, aber es klemmt in der Schleife, kann nichts in dieser Zeit durchgeführt werden. Ich habe versucht, theading (Python), noch gleich.

Kann es diese oder andere Art und Weise getan werden? Wenn ja, wie?

Maya 2009 in Windows XP

Einige fehlgeschlagen Code Referenzen:

import maya.cmds as cmds    
while (count < 90):
     lock = cmds.getAttr('pCube1.rotateX',lock=False)
     print lock
     count = count + 1 

Hier Python weise:

#!/usr/bin/python

    import thread
    import time

# Define a function for the thread
def cubeRotateX( threadName, delay):
   count = 0
   while count < 5:
      time.sleep(delay)
      count += 1
try:
   thread.start_new_thread( cubeRotateX, ("Thread-1", 2, ) )
except:
   print "Error: unable to start thread"

while 1:
   pass
War es hilfreich?

Lösung

Es klingt wie ein scriptJob kann sein, was Sie nach. Hier ist ein einfaches Beispiel unten. Allerdings ist der Rückruf in diesem Beispiel wird nur dann aufgerufen werden, wenn Sie die Maustaste loslassen dreht.

import maya.cmds

def myRotateCallback():
    print 'do something'

maya.cmds.scriptJob( attributeChange=['pCube1.rotateX', myRotateCallback] )

Wenn Sie kontinuierliche Rückrufe empfangen möchten, während die Würfel drehen, können Sie das tun an der Maya API-Ebene mit MNodeMessage :: addNodeDirtyPlugCallback.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top