見出し画像

続 Render Setup のScript備忘録

▼こちらの続きです

レンダーレイヤーをすべて取得

import maya.app.renderSetup.model.renderSetup as renderSetup

rs = renderSetup.instance()
rs.getRenderLayers()

現在のレンダーレイヤーを取得

from pymel import core as pm

pm.editRenderLayerGlobals(q=True,currentRenderLayer=True,)

レンダーレイヤーの「ノード名」が返ってきます。 Render Setupの左カラムに表示されるのはレンダーレイヤーの「レイヤー名」で、ノード名は「rs_ + レイヤー名」となっています。例えば「char_color」というレイヤー名だった場合、ここで返ってくるのは「rs_char_color」です。ちょっとややこしいですね。

レンダーレイヤーのレンダラブル切り替え

import maya.app.renderSetup.model.renderSetup as renderSetup

rs = renderSetup.instance()
rl = rs.getRenderLayers()[0]

rl.setRenderable(True)    # or False

選択中のレンダーレイヤー

レンダーレイヤーオブジェクトじゃなくてレイヤー名(文字列)のリストで返ってきます。

from pymel import core as pm

pm.renderSetupSelect(q=True)

選択中のレンダーレイヤーをレンダラブルにして、それ以外をレンダラブらないようにする

ここまでの組み合わせです。

from pymel import core as pm
import maya.app.renderSetup.model.renderSetup as renderSetup

rs = renderSetup.instance()
sel_rl = pm.renderSetupSelect(q=True)
for rl in rs.getRenderLayers():
   if rl.name() in sel_rl:
       rl.setRenderable(True)
       continue
   rl.setRenderable(False)

レンダリング設定オーバーライドを作る(レンダーレイヤーの使用レンダラーを切り替える)

import maya.app.renderSetup.model.renderSetup as renderSetup

rs = renderSetup.instance()
rs.getRenderLayers()
rl = rs.getRenderLayers()[0]

rs_coll = rl.renderSettingsCollectionInstance()
rs_coll.createAbsoluteOverride('defaultRenderGlobals', 'currentRenderer')

.renderSettingsCollectionInstance メソッドでレンダリング設定のコレクションが作られて、.createAbsoluteOverride メソッドで使用レンダラーがオーバーライドされます。
そのとき使用レンダラーになっていたレンダラー名が入るので、そのレンダーレイヤーで使用したいレンダラーに切り替えてから実行するといいでしょう。

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
note.user.nickname || note.user.urlname

記事の感想をマシュマロなどでいただけるとよろこびます🙌 https://marshmallow-qa.com/it_ks (サポートいただけるとさらによろこび投稿頻度が増えます🙌🙌)

技術本を作るサークル、Circke Qtのksです。 BOOTHにて既刊お求めいただけます > https://circleqt.booth.pm  普段はフリーランスCG屋、テクニカルライター、講師業などしています。

こちらでもピックアップされています

CG
CG
  • 22本

CG制作とその周辺情報などの記事をこちらにまとめています。

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。