В MAYA 2009 возможно ли зафиксировать событие вращения куба? - PullRequest
1 голос
/ 17 апреля 2010

Мне нужно вызвать функцию (Maya-Python), основанную на вращении кубаX.Для этого мне нужно программно зафиксировать событие.

Я пытался использовать цикл while, но он застрял в цикле. За это время ничего не поделаешь.Я попробовал theading (python), все тот же.

Можно ли это сделать тем или иным способом?Если да, то как?

Maya 2009 в Windows XP

Некоторые ошибочные ссылки на код:

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

Здесь Python мудрый:

#!/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

1 Ответ

1 голос
/ 21 апреля 2010

Звучит так, будто сценарий. Джоб может быть тем, что вы ищете. Вот простой пример ниже. Однако в этом примере обратный вызов будет вызываться только тогда, когда вы отпустите вращение мыши.

import maya.cmds

def myRotateCallback():
    print 'do something'

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

Если вы хотите получать непрерывные обратные вызовы при вращении куба, вы можете сделать это на уровне API Maya с помощью MNodeMessage :: addNodeDirtyPlugCallback.

...