В MAYA 2009 возможно ли зафиксировать событие вращения куба?

1

Мне нужно вызвать функцию (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
Теги:
events
maya
3d

1 ответ

1
Лучший ответ

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

import maya.cmds

def myRotateCallback():
    print 'do something'

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

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

  • 0
    Спасибо, я над этим поработаю (в субботу (21 апреля 2010 г.)).
  • 0
    Работал хорошо .. есть ли учебник для такого рода деятельности. (Если это есть в Документах Майя, тогда все в порядке.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню