【问题标题】:How do you get the Maya 'list; command to list the render layers in the order they are displayed in the render layer editor?您如何获得 Maya 列表;命令以在渲染层编辑器中显示的顺序列出渲染层?
【发布时间】:2019-01-14 04:47:34
【问题描述】:

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

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

【问题讨论】:

    标签: python maya


    【解决方案1】:

    渲染层和显示层有一个名为“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())]
    

    【讨论】:

      【解决方案2】:
      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)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多