如何从Maya事件中获取更改突出显示场景中的对象?

时间:2015-08-19 08:34:06

标签: python events pyqt4 maya

我正在使用:Maya2014 + pyqt4.8 + python2.7

我正在做一个应用程序,它允许您加速和简化Maya中项目的选择。是一个选择器,用户可以将其附加到场景中的对象。在窗口中选择对象会导致场景中的对象分离。但恰恰相反,我找不到怎么做。

Using JavaFX in JRE 8

如何捕捉更改场景中对象选择并进一步处理其程序时发生的事件?

3 个答案:

答案 0 :(得分:7)

我真的建议如果你做的很重,然后远离scriptjob。我更喜欢使用API​​

def test(*args, **kwargs):
    print "Fooo"


import maya.OpenMaya as OpenMaya
idx = OpenMaya.MEventMessage.addEventCallback("SelectionChanged", test)

#when ever you finish doing your stuff
OpenMaya.MMessage.removeCallback(idx)

答案 1 :(得分:2)

您可以使用scriptJob命令。

scriptJob让您在满足指定条件或触发指定事件时指定代码或执行某些操作。

对于选择更改,您可以使用event标记"SelectionChanged"作为参数:

myScriptJobID = scriptJob(event=["SelectionChanged", your_function])

# You can later use this scriptJob's id to modify or delete it like so:

scriptJob(kill=myScriptJobID)

查看docs了解更多选项。

答案 2 :(得分:0)

直到我找到基于maya api的解决方案:

self.sJob = cmds.scriptJob(event=['SelectionChanged', self.myFnc])

此机制创建Maya事件,该事件在存在更改对象选择时调用我的函数。

也许有更正确的选择。例如,获取识别器窗口maya,它会使您的事件发生。虽然我认为使用maya api也不是一个糟糕的选择。唯一的缺点是你必须在关闭窗口时关注并删除scriptJob,但这是一个可以解决的问题。