見出し画像

[Blender]Driverを使用してViewLayerごとにマテリアルを切り替える(Material Override)

ほんとはもう少しこまめに更新するつもりだったんだけどなあ...。

備忘録もかねてまとめていきます。

こちらもTwitterには書いたのですが、文字数制限もあるのでもう少し詳細に


どうやらBlender2.90からView LayerをDriverから参照できるようになったようですね。
https://wiki.blender.org/wiki/Reference/Release_Notes/2.90/Animation-Rigging

つまり、これによって何ができるかというとViewLayerを切り替えるとマテリアルも自動で切り替わるような仕組みが作れるわけです。

映像を作るうえではぜひとも欲しい機能になります。

もともとBlenderでは(少なくとも、2.92時点では)MaterialOverride機能はCycles専用でEeveeでは使えません。
また、CyclesのMaterialOverrideも全オブジェクト一括でマテリアルを割り当ててしまうためなかなか使い勝手が悪かったです。

DriverでViewLayerを判別できれば、MixShaderでマテリアル切り替えができるのでこれらの問題が解決しそうです。

画像1

テスト用に上図のようなマテリアルを作成しました。

Driverは以下のような設定です

画像2

TypeをScripted Expressionにし、Expressionに以下のスクリプトを入力します。

1 if depsgraph.view_layer.name == "IDMask" else 0

上記Driverによって 現在のViewLayer名が"IDMask"という名前かどうかを判別します。


地味ですが、個人的には感動した仕様だったのでまとめておきました。

間違いやうまくいかない等がありましたらお知らせいただけますと幸いです。

この記事が気に入ったらサポートをしてみませんか?