您如何获得Maya列表?命令以按在渲染层编辑器中显示的顺序列出渲染层?

时间:2019-01-14 04:47:35

标签: python maya

在Maya中,当我列出场景中的渲染层时,Maya会返回这些层,但并不总是按照它们在其旧版渲染层编辑器中的显示顺序来显示。更改现有渲染层的名称或添加和减去渲染层后,情况就是如此。有没有办法列出图层并让Maya遵守渲染层编辑器中使用的顺序?

将maya.cmds导入为cmds cmds.ls(type =“ renderLayer”)

2 个答案:

答案 0 :(得分:3)

渲染层和显示层具有一个称为“ displayOrder”的属性,该属性从底部开始计数-因此,#1是UI中的最低层,#2是其上方的一层,依此类推。默认图层的ID始终为0。

这将为您提供一个renderLayers字典,其中键是顺序,值是图层:

render_layers = {
    cmds.getAttr( i + ".displayOrder") : i for i in cmds.ls(type='renderLayer')
}

您可以按显示顺序将其转换为列表:

layers_in_order = [render_layers[x] for x in sorted(render_layers.keys())]

答案 1 :(得分:0)

import maya.cmds as mc

renderlayers = sorted(mc.ls(type='renderLayer'), reverse=True, key=lambda r:mc.getAttr(r + ".displayOrder"))

for renderlayer in renderlayers:
    if ':' not in renderlayer:
       print renderlayer

':'的过滤器可防止打印来自引用的渲染层(例如每个引用文件中的defaultRenderLayer)