In MAYA 2009 ist es möglich, den Würfel drehen Ereignis zu erfassen?
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
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.