【发布时间】:2017-10-12 02:46:43
【问题描述】:
我有一个修改 Maya 渲染层选项卡的脚本。我想知道如果用户使用内置的 Maya 界面更改渲染选项卡状态和其他内容,是否有办法让浮动 UI 动态更新。例如,如果用户在内置界面中更改渲染层,脚本选项卡中的渲染层将更新。
【问题讨论】:
标签: user-interface maya
我有一个修改 Maya 渲染层选项卡的脚本。我想知道如果用户使用内置的 Maya 界面更改渲染选项卡状态和其他内容,是否有办法让浮动 UI 动态更新。例如,如果用户在内置界面中更改渲染层,脚本选项卡中的渲染层将更新。
【问题讨论】:
标签: user-interface maya
这是可行的,但不是微不足道的。
您可以使用scriptJob 来监视更改并相应地更新您的 gui。
某些类型的更改是直接公开的——例如,您可以使用对playbackRangeChanged 事件作出反应的 scriptJob 来对用户更改播放范围做出反应。上面链接的文档页面包含可以监听的更改事件列表。
如果您正在监视属性的更改,您可以使用attributeChange scriptJob 类型在特定属性发生更改时运行脚本(通过 UI 或其他任何方式)。例如,只要 Persp 相机的焦距发生变化,就会打印一条消息:
import maya.cmds as cmds
def test():
print "focal length:", cmds.getAttr('perspShape.focalLength')
cmds.scriptJob(ac = ("perspShape.focalLength", test))
其他类型的更改(其中大部分)不可用作预定义事件。您可以使用condition command 创建自己的事件,但您必须编写检测更改的代码。许多人通过使用在 Maya 空闲时运行并查找更改的脚本作业来简化事情。这行得通,但您必须仔细编写它,因为复杂的脚本会大大降低 Maya 的速度——只要用户不与 UI 交互,它就会运行。
【讨论】: