Мне нужно вызвать функцию (Maya-Python) на основе вращения куба X. Для этого я должен программно выполнить это событие.
Я пробовал использовать цикл while, но он застревает в цикле. Ничего не может быть сделано за это время. Я попробовал теадинг (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
Звучит как сценарий. Возможно, это то, что вам нужно. Вот простой пример ниже. Однако в этом примере обратный вызов будет вызываться только тогда, когда вы отпустите мышь от вращения.
import maya.cmds
def myRotateCallback():
print 'do something'
maya.cmds.scriptJob( attributeChange=['pCube1.rotateX', myRotateCallback] )
Если вы хотите получать непрерывные обратные вызовы во время вращения куба, вы можете сделать это на уровне майя API с помощью MNodeMessage:: addNodeDirtyPlugCallback.