Blender #03
マテリアル間でノードを共有
マテリアル間でノードを共有
2015-06-28
こんな事を思ったことはありませんか?例えば、マテリアルは違うけど髪とまゆ毛は同じ色にしたい!とか、メタルマリオに変身するアニメーションを作りたいけどマテリアル一つ一つ変更していくのはめんどくさい!一度にできる方法はないの?とか、思うことありますよね。そんなときに便利なのがノードグループ!このTIPSでは、ノードグループを使ってマテリアル間でノードを共有する方法を紹介します。(使用バージョン2.74 Cycles)
CONTENTS
STEP 1. 準備
最初に用意するオブジェクトはまたまた主役の Suzanne(Monkey) 、髪、まゆ毛の三つ。
1.1 オブジェクトの準備。Suzanne(Monkey) を追加したのち、これに合うように髪・まゆ毛のオブジェクトを適当にモデリング。髪オブジェクトを Hair 、まゆ毛オブジェクトを Eyebrow にリネームします。
1.1 オブジェクトの準備。Suzanne(Monkey) を追加したのち、これに合うように髪・まゆ毛のオブジェクトを適当にモデリング。髪オブジェクトを Hair 、まゆ毛オブジェクトを Eyebrow にリネームします。
1.2 マテリアルの準備。各オブジェクトにマテリアルを新規で作成してゆき、どれも同じマテリアルを持たないように します。
STEP 2. ノードグループで色を共有
髪とまゆ毛の色を共有させるノードグループの作成と、それを呼び出す方法です。ノードグループは選択したノードを一つのノードにまとめる機能ですが、作成すると同じグループをいくつでも、作成したマテリアルとは異なるマテリアルでも呼び出すことができるようになります。複数呼び出した場合はどれもグループ内のノードを共有しているという特徴があり、このTIPSではこの特徴を利用します。
2.1 Hair を選択して Node Editor へ。Shift + Aキー > Input > RGB を選択して RGBノード を追加し、Diffuseノード に繋ぎます。これで RGBノード の色が髪の色となります。
2.1 Hair を選択して Node Editor へ。Shift + Aキー > Input > RGB を選択して RGBノード を追加し、Diffuseノード に繋ぎます。これで RGBノード の色が髪の色となります。
2.2 RGBノード を Eyebrow のマテリアルと共有できるようにするためにグループ化します。RGBノード を選択した状態で Ctrl + Gキー を押します。すると、ノードグループが作成されてそのグループ内を表示した状態に切り替わります。ノードグループの出力 Group Output には RGBノード の Color出力 が繋がっていて、このノードグループは RGBノード の Color出力 を出力することがわかります。ノードグループの入力 Group Input には何も繋がっていないので、このノードグループは入力を持ちません。
2.3 Tabキー を押して元の表示へ戻します。グループ化したことで RGBノード が NodeGroupノードグループ になりました。
2.4 作成したノードグループの名前を変更します。Node Editor 内で Nキー を押し、Property Panel を表示します。Property Panel > Properties にある NodeGroup を Hair Color に変更。すると NodeGroupノードグループ が Hair Colorノードグループ にリネームされます。
2.5 Eyebrow のマテリアルに Hair Colorノードグループ を追加します。Eyebrow を選択して Shift + Aキー > Group > Hair Color を選択し、Hair Colorノードグループ を呼び出します。Hair Colorノードグループ を Difusseノード に繋ぎます。これで Hair と Eyebrow のマテリアルが RGBノード を共有している状態になりました!
STEP 3. ノードグループで一度にメタル化
Hair Colorノードグループ は単に色を出力するだけのノードグループでしたが、次は入力と出力を持つノードグループを作成してスザンヌを一度にメタル化させます(笑)
3.1 Suzanne を選択して Node Editor へ。Diffuseノード と Material Outputノード の間に Mix Shaderノード を挟み、デフォルトで 0.5 になっている Factor を 0 にしておきます。次に Anisotropicノード を追加してこれを Mix Shaderノード の下側の Shader入力 へ繋げます。これで Suzanne をメタル化させることができるようになりました。
3.1 Suzanne を選択して Node Editor へ。Diffuseノード と Material Outputノード の間に Mix Shaderノード を挟み、デフォルトで 0.5 になっている Factor を 0 にしておきます。次に Anisotropicノード を追加してこれを Mix Shaderノード の下側の Shader入力 へ繋げます。これで Suzanne をメタル化させることができるようになりました。
3.2 Mix Shaderノード と Anisotropicノード だけを選択した状態でグループ化します。Group Input と Group Output を見てみると、このノードグループの入力は Mix Shaderノード の上側の Shader入力 に繋がり、Mix Shaderノード の Shader出力 を出力することがわかります。
3.3 Tabキー を押して元の表示へ戻します。新しく作成したノードグループの名前を Metal Suzanne に変更。
3.4 Metal Suzanneノードグループ を Hair と Eyebrow のマテリアルに追加します。それぞれの Diffuseノード と Material Outputノード の間に Metal Suzanneノードグループ を挟みます。これで各マテリアルが Anisotropicノード 付きの Mix Shaderノード を共有している状態になりました!
STEP 4. 確認
最後にノードを共有できているか確認します。
4.1 まず Hair と Eyebrow のマテリアルが色を共有できているか確認します。確認しやすくするために 3D View の Viewport Shading を Rendered に変更、Lampオブジェクト などの光源を適当に追加して明るくしておきます。Hair か Eyebrow のどちらでもよいので、マテリアルの Hair Colorノードグループ を選択した状態で Tabキー を押してグループ内を表示させ RGBノード の色を変えると、もう一方のマテリアルも色が変わります!
4.1 まず Hair と Eyebrow のマテリアルが色を共有できているか確認します。確認しやすくするために 3D View の Viewport Shading を Rendered に変更、Lampオブジェクト などの光源を適当に追加して明るくしておきます。Hair か Eyebrow のどちらでもよいので、マテリアルの Hair Colorノードグループ を選択した状態で Tabキー を押してグループ内を表示させ RGBノード の色を変えると、もう一方のマテリアルも色が変わります!
4.2 次にメタル化させるノードを共有できているか確認します。どのマテリアルでもよいので Metal Suzanneノードグループ のグループ内にある Mix Shaderノード の Factor を 1 に変更すると、他のマテリアルも一度にメタル化します!これで完成!