我编写了一个python脚本,在Maya中为打火机创建渲染层。该脚本创建了4个基本层,如下图所示。该脚本还会更改每个图层上的渲染设置。
尝试更改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图层,需要以下设置:并且对于occ图层,需要进行以下设置:。 如果我稍后单独运行此代码它有时会工作但主要是我得到这个错误。有没有办法摆脱这个错误?
答案 0 :(得分:1)
你必须使用' evalDeferred()'命令。 Maya不会刷新,也无法更改您刚刚创建的传递中的参数。
示例:
> cmds.createNode( 'renderPass', name='ZDepth' )
> cmds.evalDeferred("""cmds.setRenderPassType( 'ZDepth', type='CAMZ'
> )""")