🐙
[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