渲染图层的可渲染属性更改时的 Maya 回调



我希望创建一个OpenMaya回调,当特定属性"renderable"在场景的渲染层上改变。我试过了:

import os
import time
from maya import cmds, OpenMaya as om
dag_path = om.MDagPath()
selection = om.MSelectionList()
selection.add("defaultRenderLayer")
selection.getDagPath(0, dag_path)
m_obj = dag_path.node()
def callback(message_type, plug, other_plug, client_data):
if not message_type & om.MNodeMessage.kAttributeSet:
return
if "renderable" in plug.name():
print("renderable changed!")
job = om.MNodeMessage.addAttributeChangedCallback(m_obj, callback)

但是Maya在"选择"上出现了一个错误。dag_path getDagPath(0)。我没有使用OpenMaya或回调的经验,但我会很感激我能得到的任何帮助。

据我所知defaultRenderLayer不是DAG节点,所以你应该在选择上使用getDependNode:

selection = om.MSelectionList()
selection.add("defaultRenderLayer")
m_obj = om.MObject()
selection.getDependNode(0, m_obj)

要进行双重检查,应该将defaultRenderLayer打印为节点名称:

node = om.MFnDependencyNode(m_obj)
print(node.name())

最新更新