有没有办法让玛雅python gui更新对Maya其余部分的设置进行更改?

问题描述:

我有一个脚本可以修改Maya渲染层选项卡。我想知道如果用户使用内置的Maya界面更改渲染选项卡状态和其他内容,是否有动态浮动UI更新的方法。例如,如果用户更改内置界面中的渲染图层,脚本选项卡中的渲染图层会更新。有没有办法让玛雅python gui更新对Maya其余部分的设置进行更改?

这是可行的,但并非微不足道。

你会用scriptJob来观察变化并相应地更新你的gui。

某些类型的更改会直接显示 - 例如,您可以通过脚本作业响应用户更改播放范围,该脚本作业对playbackRangeChanged事件作出反应。上面链接的文档页面包含可以侦听的更改事件的列表。

如果您正在观察属性的更改,则可以使用attributeChange scriptJob类型在特定属性发生更改时(通过UI或其他任何方式)运行脚本。

import maya.cmds as cmds 

def test(): 
    print "focal length:", cmds.getAttr('perspShape.focalLength') 

cmds.scriptJob(ac = ("perspShape.focalLength", test)) 

其他种类的变化(其中大多数)不能作为预定义的事件:例如,每当Persp相机的焦距变化,这将打印的消息。您可以使用condition command创建自己的事件,但您必须编写检测更改的代码。很多人通过使用脚本作业来简化事情,该脚本作业在Maya闲置并查找更改时运行。这很有效,但是你必须小心翼翼地编写它,因为复杂的脚本会让Maya变得非常缓慢 - 只要用户没有与UI进行交互,它就会运行。