【Blender】一つのオブジェクトに対して、複数のUVマップ、複数のテクスチャを適用する方法 Blender 2.8版

Blender 2.8で一つの立方体オブジェクトに対して複数のUVマップとテクスチャを適用してみたいと思います。立方体の面数分、6つのUVマップと6つのテクスチャを使用して各面にそれぞれのテクスチャが表示されるようにします。

スポンサーリンク

マテリアルノードを使用した場合の複数UVマップと複数テクスチャ

Blender 2.79以前でノードべースのCycles Renderを使用しない場合であれば、テクスチャの数分マテリアルを作成してテクスチャをセットし、編集モードで各面を選択してマテリアルを適用していけば一つのオブジェクトに対して複数のテクスチャを使用することができます。

Blender 2.8ではノードベースのマテリアル出力がデフォルトになっているので、複数のUVマップとテクスチャを一つのオブジェクトに使用する場合はノードを組む必要があります。

テクスチャの準備

立方体の6面分に対応するテクスチャとして6色のpng画像を用意します。

Tex1は512×512の大きさの画像で、それ以外は1024×1024の大きさで水平の半分512以降を消去した状態の画像になっています。この半分のα値0の部分が後のUVマップで大事になります。

立方体のUV展開

立方体の全ての辺にシームをマークして、UV展開します。512×512のTex1に合わせるようにUV頂点をセットしておきます。

この時点では全ての面がTex1になっています。

UVマップの追加

Tex1でUV展開したので現在UVマップはUVMap1の一つですが、さらに5つ追加して立方体の六面分用意します。

UVの頂点位置はここで弄らなくても良いのですが、とりあえず UVMap2~6をTex1のUV頂点と同様の状態にしておきました。

UVマップの追加はプロパティのオブジェクトデータに追加箇所があります。

マテリアルノードの実装

ワークスペースをShadingに切り替えて、ノードを組んでいきます。

最初に、UVMap1でTex1が表示されるように画像のようにノードを繋いでいきます。

「属性」ノードの名前にUVマップ名を指定し、ベクトルを画像テクスチャノードのベクトルに接続します。これで複数あるUVマップとテクスチャを対応させる事ができます。

ここから、UVMap2で展開したTex2を追加したいと思います。

UVMap1のTex1カラー、UVMap2のTex2カラーをミックスで合成し、係数にTex2のαを指定する事で、α値が1ならTex2が表示され、0ならTex1が表示されるようになります。

Tex2のUVMap2が画像全体を覆うように展開されているならば、現在下記画像のようになると思います。

ノードを組む事でTex2のアルファ値が0の部分には、Tex1が表示される状態になりました。

これでTex2を表示したい面にはUVMap2をアルファ値のある画像部分、Tex2を表示しない面にはアルファ値の無い消去された部分を指定するようにすれば、UVMap1とUVMap2が共存した状態で立方体オブジェクトにTex1、Tex2を表示できました。

後はUVMap3~6も同様に展開し、ノードを追加して行くことで立方体オブジェクト一つに対して複数のUVマップとテクスチャを設定する事ができます。

RGBミックスノードで複数UVマップ、テクスチャを実現

RGBミックスノードでカラーを合成し、係数のアルファ値でどっちのテクスチャを表示するかの結果に再びRGBミックスノードで合成と繰り返して行くことで、どんどんUVマップとテクスチャを追加できる事がわかりました。

属性ノードによるUVマップの指定、画像テクスチャノードによるテクスチャの指定、RGBミックスノードを使うことで、一つの立方体オブジェクトに対して複数のUVマップ、複数のテクスチャをセットする事ができました。

これで逐次、部分的に別オブジェクトに分離したりせずに済みそうですね!

スポンサーリンク