👀

Maya rendersetup メモ2

に公開

Maya rendersetup メモ2

rendersetupを追加で触ったので、前回書きそびれてたやつも含めてメモ

前回: https://zenn.dev/hph/articles/ddcf4a9a62229e

pythonでの操作

そのままコピペしても、rsインスタンスやlayerなどは未定義状態の可能性があるので前回とかを参照して変数は作っておいてください。

辞書形式の rendersetup のレイヤーを出力

encode() でrendersetupを辞書で出力できるので、そこからlayerを取得する。
これを取得したらよしなにJSONで保存すればOK。

rs.encode().get("renderSetup",{}).get("renderLayers",{})

# Result: [{'renderSetupLayer': {'name': 'test', 'renderable': True, 'collections': [{'collection': {'name': 'test2'...

JSON形式のrendersetup のレイヤーをインポート

JSONファイルを普通に辞書化して、読み込み。
多分2つ目の引数でimport時のコンフリクトの処理とかが変わるんだろうけど、layerが無い状態でしか使ったことがないのでわからないです💦

json_path = r"path\to\your_layer_info.json"
with open(json_path, 'r') as file:
    data = json.load(file)

rs.decode(
    {'renderSetup': {'renderLayers': data}},
    renderSetup.DECODE_AND_MERGE,
    None,
)

ラベルの色を取得

ラベルの色を取得する。
"Blue", "Green", "Orange", "Red", "Yellow", "Violet" か None が返される。
(None は "No Color" の時)

# レイヤーのラベルの色を取得
layer_color = rs.getRenderLayers()[0].getLabelColor()
# コレクションのラベルの色を取得
collection_color = rs.getRenderLayers()[0].getCollections()[0].getLabelColor()

レイヤー名を指定して取得

レイヤー名を指定して取得する。
コレクションには相当するメソッドはなさそう。。。

layer = getRenderLayer("layerName")

レイヤーのコレクションを取得

レイヤーのコレクションを全取得。
特定のコレクションを取得したい場合、これをした後にループで回す。

layer.getCollections()

セレクターに静的選択を追加

rendersetupでは名前での指定の他にノードを直接追加する静的選択も可能。
alt text
ノードの名前変更対応などとして使うのが主なユースケースな気がする。

cmds.polySphere()
cmds.polyCube()
node_list = ["pSphere1","pCube1"]

selector = collection.getSelector()
selector.staticSelection.add(node_list)

セレクターから静的選択を削除

削除もできる。
ユースケースが不明。

node_list = ["pSphere1","pCube1"]
selector.staticSelection.remove(node_list)

セレクターから静的選択を取得

取得も一応できる。

selector.staticSelection.asList()

レイヤーの並び順を入れ替え

rendersetup画面でのレイヤーの表示順を入れ替える。
alt text

# detachしないと壊れるので注意
rs.detachRenderLayer(layer)
rs.attachRenderLayer(index, layer)

レイヤーの並び順はレイヤーが内部的に保持している1つ前と1つ後のレイヤーの参照で決まっている。
連結リストのようなイメージ。

GitHubで編集を提案

Discussion