En 2009 MAYA, es posible capturar el evento cubo de rotación?
Pregunta
Tengo que llamar a una función (Maya-Python) basado en el cubo rotationX. Para eso tengo para capturar el evento, mediante programación.
He intentado utilizar el bucle while pero stucks en el bucle, nada se puede hacer en ese momento. Probé theading (Python), sigue siendo igual.
¿Se puede hacer esto o de otra manera? En caso afirmativo, ¿cómo?
Maya 2009 en Windows XP
Algunas referencias de código fallidos:
import maya.cmds as cmds
while (count < 90):
lock = cmds.getAttr('pCube1.rotateX',lock=False)
print lock
count = count + 1
Aquí Python sabia:
#!/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
Solución
Suena como un scriptJob puede ser lo que está buscando. Aquí hay un ejemplo simple continuación. Sin embargo, en este ejemplo la devolución de llamada sólo se llama al soltar el ratón de rotación.
import maya.cmds
def myRotateCallback():
print 'do something'
maya.cmds.scriptJob( attributeChange=['pCube1.rotateX', myRotateCallback] )
Si desea recibir devoluciones de llamada continua mientras se hace girar el cubo, se puede hacer eso a nivel de API maya con MNodeMessage :: addNodeDirtyPlugCallback.