renderLayer 的可渲染属性更改时的 Maya 回调
Maya callback when renderLayer's renderable attribute changed
我希望在场景中渲染层上的特定属性“可渲染”发生更改时创建 OpenMaya 回调。我试过这个:
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 在“selection.getDagPath(0, dag_path) 上报错。
我没有使用 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())
我希望在场景中渲染层上的特定属性“可渲染”发生更改时创建 OpenMaya 回调。我试过这个:
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 在“selection.getDagPath(0, dag_path) 上报错。 我没有使用 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())