في مايا 2009 ، هل من الممكن التقاط الحدث الدوراني المكعب؟

StackOverflow https://stackoverflow.com/questions/2656891

  •  27-09-2019
  •  | 
  •  

سؤال

أحتاج إلى استدعاء وظيفة (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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top