どうも!たっくんです!
あれこれ試したりし、解析したりした内容になりますが、今回は「ライト」周りを書いていきたいと思います!
普通にコレクションを作ってオーバーライド書ける場合もあるかと思いますので、お目にかからない人もいるかもしれません(;・∀・)
ライトのオーバーライドがあるか確認
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)