如何从场景中的更改高亮对象的 Maya 事件中获取?

How to get from Maya event of a change highlight objects in the scene?

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

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

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

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

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

此机制会创建 Maya 事件,该事件会在对象选择发生变化时调用我的函数。

或许还有更正确的选择。例如,获取 identifokator window maya,它会成为您的活动。虽然我认为使用 maya api 也是一个不错的选择。唯一的缺点是在关闭一个window时必须遵循并删除scriptJob,但这是一个可以解决的问题。

您可以为此使用 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 了解更多选项。

我真的建议如果你做的事情很繁重,那就远离 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)