我需要根据cube rotationX调用一个函数(Maya-Python)。为此,我必须以编程方式捕获事件。
我尝试使用while循环,但它卡在循环中,在那段时间内什么也做不了。 我尝试了主题(python),仍然相同。
可以这样或其他方式完成吗?如果是,怎么样?
Windows XP中的Maya
一些失败的代码引用:
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
答案 0 :(得分:1)
这听起来像是一个剧本,可能就是你所追求的。这是一个简单的例子。但是,在此示例中,仅当您从旋转中释放鼠标时才会调用回调。
import maya.cmds
def myRotateCallback():
print 'do something'
maya.cmds.scriptJob( attributeChange=['pCube1.rotateX', myRotateCallback] )
如果要在旋转多维数据集时接收连续回调,可以使用MNodeMessage :: addNodeDirtyPlugCallback在maya API级别执行此操作。