RenderSetupをPythonで操る方法 part5

takkun
どうも!たっくんです!

あれこれ試したりし、解析したりした内容になりますが、今回は「ライト」周りを書いていきたいと思います!

普通にコレクションを作ってオーバーライド書ける場合もあるかと思いますので、お目にかからない人もいるかもしれません(;・∀・)

RenderSetupをPythonで操る方法 part1

2020.04.08

RenderSetupをPythonで操る方法 part2

2020.04.09

RenderSetupをPythonで操る方法 part3

2020.04.10

RenderSetupをPythonで操る方法 part4

2020.04.11

ライトのオーバーライドがあるか確認

rs = renderSetup.instance()
layer = rs.getRenderLayer('renderSetupLayer1')
print layer.hasLightsCollectionInstance()

ライトオーバーライドのインスタンスの取得

rs = renderSetup.instance()
layer = rs.getRenderLayer('renderSetupLayer1')
lightCollection = layer.lightsCollectionInstance()
ライトのコレクションがないレイヤーに「lightsCollectionInstance」を実行すると、インスタンスが作成されます。

ライトオーバーライド項目の取得

rs = renderSetup.instance()
layer = rs.getRenderLayer('renderSetupLayer1')
lightCollection = layer.lightsCollectionInstance()

# ライトごとのコレクションの取得
lightChildCollections = lightCollection.getCollections()
for lightChildCollection in lightChildCollections:
    # 項目名の取得
    print lightChildCollection.name()
    
    # セレクターの取得
    selector_ = lightChildCollection.getSelector()
    
    # セレクターのメンバーの取得
    print selector_.names()

    # オーバーライドの取得
    overrides = lightChildCollection.getOverrides()
    for override_ in overrides:
        # アトリビュート名の取得
        print override_.attributeName()
        
        # オーバーライド値の取得
        print override_.getAttrValue()

ライトオーバーライド項目の追加/設定

rs = renderSetup.instance()
layer = rs.getRenderLayer('renderSetupLayer1')

# ライトのオーバーライドの追加
override_ = layer.createAbsoluteOverride('directionalLightShape1', 'aiDiffuse')

# 値の変更
print override_.setAttrValue(0.0)