En MAYA 2009, est-il possible de capturer l'événement rotation du cube?
Question
Je dois appeler une fonction (Maya-Python) basé sur le cube rotationX. Pour cela, je dois capturer l'événement, programmation.
J'essayé d'utiliser en boucle mais il stucks dans la boucle, ne peut rien faire en ce moment-là. J'ai essayé theading (python), toujours même.
Peut-on faire cela ou d'une autre façon? Si oui, comment?
Maya 2009 dans Windows XP
Quelques références de code forfait:
import maya.cmds as cmds
while (count < 90):
lock = cmds.getAttr('pCube1.rotateX',lock=False)
print lock
count = count + 1
Voici Python sage:
#!/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
La solution
On dirait un scriptJob peut être ce que vous êtes après. Voici un exemple de simples ci-dessous. Cependant, dans cet exemple, le rappel ne sera appelée lorsque vous relâchez la souris de tourner.
import maya.cmds
def myRotateCallback():
print 'do something'
maya.cmds.scriptJob( attributeChange=['pCube1.rotateX', myRotateCallback] )
Si vous souhaitez recevoir en continu callbacks tout en faisant tourner le cube, vous pouvez le faire au niveau de l'API avec MAYA MNodeMessage :: addNodeDirtyPlugCallback.