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
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top