في مايا 2009 ، هل من الممكن التقاط الحدث الدوراني المكعب؟
سؤال
أحتاج إلى استدعاء وظيفة (Maya-Python) بناءً على Cube RotationX. لذلك لا بد لي من التقاط الحدث ، برمجيا.
حاولت استخدامها أثناء الحلقة ولكنها تستودع في الحلقة ، لا يمكن القيام بأي شيء في ذلك الوقت. حاولت التعبير (بيثون) ، لا يزال نفسه.
هل يمكن القيام بذلك أو بطريقة أخرى؟ إذا كانت الإجابة بنعم ، كيف؟
Maya 2009 في Windows XP
بعض مراجع التعليمات البرمجية الفاشلة:
import maya.cmds as cmds
while (count < 90):
lock = cmds.getAttr('pCube1.rotateX',lock=False)
print lock
count = count + 1
هنا بيثون حكيم:
#!/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
المحلول
يبدو أن scriptJob قد يكون ما تتبعه. إليك مثال بسيط أدناه. ومع ذلك ، في هذا المثال ، لن يتم استدعاء رد الاتصال إلا عند إطلاق الماوس من الدوران.
import maya.cmds
def myRotateCallback():
print 'do something'
maya.cmds.scriptJob( attributeChange=['pCube1.rotateX', myRotateCallback] )
إذا كنت ترغب في الحصول على عوائد مستمرة أثناء تدوير المكعب ، فيمكنك القيام بذلك على مستوى Maya API مع MnodeMessage :: addNodedIrtyplugCallback.
لا تنتمي إلى StackOverflow