Blender #04
マテリアル・ノードライブラリ
マテリアル・ノードライブラリ
2015-07-17
よく使うマテリアルや決まった構成のノードってありますよね。でも、新しいプロジェクトを立ち上げるたびにまた一から設定していると時間がもったいない!と思いませんか?そこで、よく使うものは最初からライブラリにしてしまおう!という方法を紹介します。ライブラリ化することができるアドオン(Matlib VX)はあるのですが、Blenderの機能を理解するため、ここでは標準機能だけを使ってライブラリにします。(使用バージョン2.75 Cycles)
CONTENTS
STEP.1 準備
マテリアルを作成するにはオブジェクトが必要となります。用意するオブジェクトは何でもいいのですが、ライブラリを持つオブジェクトとして分かりやすくするために名前を変えておきます。
1.1 マテリアルを作成するためのオブジェクトを用意します。Suzanne(Monkey) を追加し、名前を Material Master Suzanne (以下MMS)にリネームします。(先述のようにオブジェクトは何でも構いませんし、名前もMMSにする必要はありません(笑)。ご自身で分かりやすいと思うものにしてください。)
STEP.2 マテリアル
MMS へライブラリに登録したいマテリアルを作成します。
2.1 作成するマテリアルはお任せします。名前はライブラリのものと分かりやすいように <ML> マテリアル名 (MLはMaterial Libraryの略)とします。カテゴリ分けをしたい時は <ML> カテゴリ名 マテリアル名 のようにします。下の画像は一例。
STEP.3 ノード
MMS へライブラリに登録したいノードを作成します。登録はTIPS #03で紹介したノードグループを利用します。ここでは一例として、テクスチャをセピア調に変換するノードグループと、透過PNGをテクスチャとして使う時に必要なノードをまとめたノードグループの二種類を作成します。
3.1 ノードグループを登録するためのマテリアルを作成。MMS に <ML> Node Groups という名前のマテリアルを追加し、画像の通りにノードを組みます。これはDiffuseテクスチャを使う時に必要なノードを組んでいます。
3.2 セピア調に変換するためのノードを追加します。黄色い枠の中にあるノードを追加します。テクスチャの彩度を落とし、セピアのベースとなる色を乗算(Multiply)しています。追加した2つのノードを選択して Alt + Gキー でグループ化します。
3.3 セピアの色をグループ外から変更できるようにします。Multiplyノード の下側にある Color入力 を Group Input の空いている ソケット へと繋ぎます。このようにグループ内のノードが持つ Color入力 や Factor入力 を Group Input へ繋げると、グループ外から入力を変更することができるようになります。
TIPS #03でノードグループはグループ内のノードを共有していると書きましたが、色の入力がグループ外にあるということはつまり共有しないということで、同じノードグループがあってもそれぞれ違う色に設定することができるようになります。
3.4 作成したノードグループの入力 Group Input を見てみると Color と Color2 があります。このままだとグループ外から見たときに何の色のことなのか分かり難いですよね。これを見てすぐに分かるような名前に変更します。
3.5 Property Panel(Nキーで表示) > Interface > Inputs: のリストにある Color をクリック。Inputs: はこのノードグループが持つ入力、Outputs: は出力をリスト表示しています。クリックした Color は Image Textureノード に繋がっているので ->Image Texture In という名前にすることにします。Interface > Name の Color を ->Image Texture In に変更。Group Input の Color が ->Image Texture In にリネームされたことを確認します。
3.6 Color2 はセピアのベースとなる色なので Sepia Color という名前にすることにします。Color2 を Sepia Color にリネームします。
3.7 グループ内での編集は終わりです。次はこのノードグループが何のグループなのか分かるように名前を変更します。Tabキー を押して表示を戻し、ノードグループの名前を <NL> Change to Sepia (NLはNode Libraryの略)にリネームします。これで一つ目のノードグループができました!
3.8 ノードグループは作成した時点で登録されます。つまり、Material Output に繋がっていなくてもよいということです。<NL> Change to Sepia は完成したので接続を外して適当な場所へ移動させておきます。
3.9 透過PNGをテクスチャとして使う時に必要なノードを追加します。黄色い枠の中にあるノードを組みます。ノードが組めたら枠の中のノードを全部選択してグループ化します。
3.10 このノードグループは必要なノードを一つにまとめた状態、つまりZIPファイルのように圧縮した状態です。グループ内には Image Textureノード があり、グループ化したまま使うとテクスチャを共有してしまって都合が悪いので、使用前に Alt + Gキー でグループ解除(展開)をする必要があります。圧縮してあって展開が必要なノードグループということで名前にZIPを含めることにします。グループの名前を <NL-ZIP> Diff + Alpa Tex にリネームします。これで二つ目のノードグループができました!
3.11 三つ目、四つ目とノードグループを追加したいときは ノードを組む→グループ作成→接続を外して移動→新たにノードを組む→… を繰り返していきます。
3.12 ここまでの結果をファイルに保存します。MMS は単なるライブラリを持つオブジェクトなので、間違ってレンダリングしないように レンダリング を オフ にし、それ以外のオブジェクト(Camera や Lamp など)がある場合は削除して Material Library.blend として適当な場所に保存します。
STEP.4 ライブラリの読み込みと使い方
新規プロジェクトから Material Library.blend にあるライブラリ(オブジェクト) MMS を読み込んで使ってみます。読み込み方法は Info > File > Append または Info > File > Link です。
Append と Link は他のblendファイルからオブジェクトやマテリアルなどを読み込む機能なのでぜひ使い方をマスターしておきましょう!Append はAppend元をまるまる編集可能な状態でコピーし、Link はLink元を編集不可な状態で参照(編集したい時はLink元のファイルで編集)します。
つまり、ここで Append でライブラリを読み込んだ場合、Appendした時点でのライブラリを編集可能な状態でコピーするということになり、Material Library.blend のライブラリに後から追加したものはコピーされません。また、ライブラリを更新(再Append)するとマテリアル名が被り連番が付いてしまうことにもなります。
Link でライブラリを読み込んだ場合、Material Library.blend のライブラリに後から追加したものも読み込み先に追加されますが、コピーではなく参照しているため、ライブラリの編集は Material Library.blend で行う必要があります。
どちらも一長一短であり、必要に応じて使い分けるようにしてください。
Append と Link は他のblendファイルからオブジェクトやマテリアルなどを読み込む機能なのでぜひ使い方をマスターしておきましょう!Append はAppend元をまるまる編集可能な状態でコピーし、Link はLink元を編集不可な状態で参照(編集したい時はLink元のファイルで編集)します。
つまり、ここで Append でライブラリを読み込んだ場合、Appendした時点でのライブラリを編集可能な状態でコピーするということになり、Material Library.blend のライブラリに後から追加したものはコピーされません。また、ライブラリを更新(再Append)するとマテリアル名が被り連番が付いてしまうことにもなります。
Link でライブラリを読み込んだ場合、Material Library.blend のライブラリに後から追加したものも読み込み先に追加されますが、コピーではなく参照しているため、ライブラリの編集は Material Library.blend で行う必要があります。
どちらも一長一短であり、必要に応じて使い分けるようにしてください。
4.1 新規ファイルを開きます。次に Append(Link) > Material Library.blend保存場所 > Material Library.blend > Object > MMSをクリック > 右上のAppend(Link) from Libraryボタンをクリック してライブラリの MMS を読み込みます。マテリアルの一部だけを読み込みたい場合は Object ではなく Material > 読み込みたいマテリアルをクリック(Shift + クリックで複数選択可) > 右上のAppend(Link) from Libraryボタンをクリック でできます。MMS が邪魔にならないように他のレイヤーへ移動させます。
4.2 あとはマテリアルとノードグループをいつものように使うだけ!
4.3 ここからはオマケなのでしなくても構いません。新規プロジェクトごとにライブラリを読み込むのが面倒くさい!という方はスタートアップファイルに登録してしまいましょう。この場合、再Appendしなくてもいいように Link で読み込む方がいいかもしれません。また、スタートアップに登録したときの状態(UIやレイアウト、オブジェクトなど)がまるまる登録されるので、登録前にスタートアップファイル(C:\Users\ユーザー名\AppData\Roaming\Blender Foundation\Blender\Blenderバージョン\config\startup.blend)のバックアップをとっておきましょう。MMS を Link した後に Info > File > Save Startup File > Save Startup Fileをクリック することで Link した状態をスタートアップファイルに登録することができます。
もしスタートアップファイルがおかしくなってしまった時は、とっておいたバックアップを startup.blend へ上書きすれば元に戻るはずです。ちなみに configフォルダ にある userpref.blend は User Preference(ユーザー設定) のファイルです。こちらも非常事態に備えてバックアップをとっておくことをおススメします!
もしスタートアップファイルがおかしくなってしまった時は、とっておいたバックアップを startup.blend へ上書きすれば元に戻るはずです。ちなみに configフォルダ にある userpref.blend は User Preference(ユーザー設定) のファイルです。こちらも非常事態に備えてバックアップをとっておくことをおススメします!
ノードグループは入れ子にして使うこともできます。大規模なノードを組んでごちゃごちゃしてしまったときはこのTIPSを参考にスッキリとまとめてみましょう!
ここで紹介した名付けのルールはほんの一例ですので、これらを参考にご自身でもオリジナルのルールを決めてオリジナルのライブラリを作ってみてください!