您如何获得 Maya 列表;命令按渲染层编辑器中显示的顺序列出渲染层?
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 中,当我列出场景中的渲染层时,Maya returns 层,但并不总是按照它们在其旧版渲染层编辑器中显示的顺序排列。在更改现有渲染层的名称或添加和减去渲染层后,情况会如此。有没有办法列出层并让 Maya 遵守渲染层编辑器中使用的顺序?
导入 maya.cmds 作为命令
cmds.ls(类型="renderLayer")
渲染层和显示层有一个名为 "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())]
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)
在 Maya 中,当我列出场景中的渲染层时,Maya returns 层,但并不总是按照它们在其旧版渲染层编辑器中显示的顺序排列。在更改现有渲染层的名称或添加和减去渲染层后,情况会如此。有没有办法列出层并让 Maya 遵守渲染层编辑器中使用的顺序?
导入 maya.cmds 作为命令 cmds.ls(类型="renderLayer")
渲染层和显示层有一个名为 "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())]
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)