🐙

[Maya Python]UIで選択中のRender Setupを取得

に公開

目的


UIで選択中(=水色にハイライトされている)のRender Setup LayerをPythonで取得したい。


解決策

maya.cmds.renderSetupSelect()で取得できる。

import maya.cmds as cmds

selected_layers = cmds.renderSetupSelect(q=1)
print(selected_layers)

# Result: ['renderSetupLayer2']

または、maya.app.renderSetup.views.viewCmds.getSelection()で取得できる。

import maya.app.renderSetup.views.viewCmds as viewCmds

selected = viewCmds.getSelection()
print(selected)

# Result: ['renderSetupLayer2']

いずれも、選択中のLayerやCollectionがまとめて返される。

Layerのみ、Collectionのみを取得したい場合はオプションを指定。

# render layerのみ取得
selected_layers = cmds.renderSetupSelect(q=1, renderLayers=1)

# rende collectionのみ取得
selected_collections = layers = cmds.renderSetupSelect(q=1, collections=1)

Render Setupの構成要素もノードなので、cmds.nodeType()で種類を確認できる。

cmds.nodeType('collection1')

# Result: collection

余談(アクティブなLayerの取得)

以下のようにすれば、アクティブ(= 目のアイコンが付いている)なRender Setup Layerを取得できる。

from maya.app.renderSetup.model import renderSetup

rs = renderSetup.instance()
layers = rs.getRenderLayers()
active_layer = [l for l in layers if l.isVisible()][0]
print(active_layer.name())

Discussion