更改Maya中创建的图层的渲染元素的状态时出错

时间:2014-05-14 11:59:30

标签: python maya

我编写了一个python脚本,在Maya中为打火机创建渲染层。该脚本创建了4个基本层,如下图所示。该脚本还会更改每个图层上的渲染设置。 enter image description here
尝试更改chrShadow和occ图层的渲染元素的状态时出现以下错误。

# RuntimeError: # Error occurred during execution of MEL script
file: C:/Program Files/Autodesk/Maya2013/vray/scripts/vrayCreateRenderElementsTab.mel line    453: Object 'listAdded' not found. 

创建每个图层后,脚本会相应地更改渲染设置。 FOllwoing是尝试更改渲染元素的代码。

    mel.eval("unifiedRenderGlobalsWindow")

    render_elements = cmds.ls(type="VRayRenderElement")

    if "Beauty" in current_layer:
        for passes in render_elements:
            mel.eval("listAddedPressed " + str(passes) + " 1")

    elif "Shadow" in current_layer:
        for passes in render_elements:
            if "Shadow" in passes:
                mel.eval("listAddedPressed " + str(passes) + " 1")
            else:
                mel.eval("listAddedPressed " + str(passes) + " 0")

    elif "occ" in current_layer:
        for passes in render_elements:
            if "vrayRE_Extra_Tex" in passes:
                mel.eval("listAddedPressed " + str(passes) + " 1")
            elif "vrayRE_Velocity" in passes:
                mel.eval("listAddedPressed " + str(passes) + " 1")
            else:
                mel.eval("listAddedPressed " + str(passes) + " 0")

对于chrShadow图层,需要以下设置:enter image description here并且对于occ图层,需要进行以下设置:enter image description here。 如果我稍后单独运行此代码它有时会工作但主要是我得到这个错误。有没有办法摆脱这个错误?

1 个答案:

答案 0 :(得分:1)

你必须使用' evalDeferred()'命令。 Maya不会刷新,也无法更改您刚刚创建的传递中的参数。

示例:

> cmds.createNode( 'renderPass', name='ZDepth' )
> cmds.evalDeferred("""cmds.setRenderPassType( 'ZDepth', type='CAMZ'
> )""")