【Unreal Engine】1つのマテリアルスロットしかないメッシュの一部分の色を変えるシンプルな方法
はじめに
いつも創作活動お疲れ様です。
本記事では「Unreal Engine」にて、1つのマテリアルスロットしかないメッシュの、一部分の色を変える方法について解説したいと思います。
EpicのUnrealEngine公式ページではマテリアルの詳しい内容についていろいろ解説いただいていますが、なかなか初心者の方には難しい部分もあるかと思います。
ですので本記事では極力シンプルにしたマテリアルノードで解説したいと思います。
難易度/使用ツール
難易度:初級(Unreal EngineのMaterialが何となくわかる程度)
使用ツール:Unreal Engine 5.4.4
※以降Unreal EngineについてはUE5と略します。
事前準備
UE5に対象となるメッシュのFBXファイルをインポートします。
今回私は下記のような、車のホイールのメッシュを用意しました。
DCCツール(Blender)にてUVも開いています。
今回は、この車のホイールの「スポーク部分のみ」違う色にしたい、というようなシチュエーションを想定してみます。
作業
UE5にてベースマテリアルを作成
まずは以下のようなめちゃくちゃシンプルなノードのマテリアルを作成しました。
これをとりあえずホイールのメッシュに適用します。
現状では、このインポートしてきたFBXファイルにはマテリアルスロットが1つしかないため、メッシュの一部分のみ色を変更したいと思ってもかなり面倒だと思います。
DCCツールに戻って作業するのも時間がかかりますし、何よりいろいろなカラーバリエーションを用意したいとなったとき、そのバリエーション分だけテクスチャを用意していたのではプロジェクトの容量がとても大きなものになってしまいます。
そこで、今回は”テクスチャマスクを使用してUVマップの指定したメッシュ部分のみ色を変える”という方法を使ってみたいと思います。
マスク用のテクスチャ作成
まず、コンピュータの中では「黒色は0」「白色は1」の数値に変換されるということを頭に叩き込むことが重要です。
これを前提として、UVマップの中で「色を変更したい部分の面を白色に塗りつぶしたテクスチャ」を用意します。
図2のUVマップの中で色を変更したいスポーク部分を、下記のようにPhotoshopで塗りつぶしました。
出来上がった図6のテクスチャをUE5にインポートしましょう。
マスターマテリアルの作成
先ほど作ったマテリアルノードを以下のように変更してみてください。
ベースカラーのノードが変更されていますね。
途中に「Lerp」というノードがあると思います。(検索では正式名称の"LinearInterpolate"で出てきます)
このノードは何かというと、日本語では「線形補間」といい、”設定した2つの値(A、B)を(Alpha)の割合でブレンドして出力することができる”というものです。
文字にするとややこしいのですが、今回であれば「A」の入力部分にテクスチャマスクの黒色の部分(ベースカラーとしたい部分)、「B」の部分にテクスチャマスクの白色の部分(色を変更したい部分)が入ると覚えてください。
結果は以下のようになります。
UVマップのうち、白の部分のメッシュのみ違う色にすることができました!
今回は割愛しますが、同じようにラフネスやメタリックなどほかのパラメータでも同じように接続すれば、異素材の組み合わせも可能になりますね。
要するに、「Lerp」ノードの(Alpha)にマスク用のテクスチャ、(A)にベースとなる値、(B)にベースから変更したい値、を入れるといろいろなことができる、というふうに覚えておくと応用が利くと思います。
マテリアルインスタンスの作成
いろいろなカラーバリエーションを作る場合は、マテリアルをインスタンス化しておくと便利です。
パラメータ化したい(後から数値をいじりたい)ノードの上で右クリックし、「パラメータに変換」を選択します。
私はベースカラーのA,Bとラフネス、メタリックの値をパラメータ化しました。
パラメータ化できたら、今作成したマテリアルの名前を変更します。
今回はこれをマスターマテリアルとしたいので、私は「M_Wheel」としました。
※UEではマスターマテリアルの頭には「M_」を付ける慣習があるようですので、私もそれに倣います。
出来上がったマスターマテリアルの上で右クリックし、「マテリアルインスタンスを作成」を選択します。
マテリアルインスタンスが1つできますので名前を「MI_Wheel」とでもしておきます。
※マテリアルインスタンスの頭には「MI_」とつけるのが多いようです。
これ以降マスターマテリアルは触りませんので、不用意な事故防止のため、ホイールのマテリアルをマスターマテリアル「M_Wheel」からマテリアルインスタンス「MI_Wheel」に差し替えておきましょう。
マテリアルをインスタンス化すると、設定画面がノードではなく以下のような項目になり、先ほどマスターマテリアル側でパラメータ化した箇所のみが
触れるようになります。
色などのバリエーションを増やしたい場合は、マテリアルを複数作るのではなく、この1つのマスターマテリアルから派生したマテリアルインスタンスを複数作ることにより、容量や負荷を節約することができます。
さいごに
お疲れさまでした!
いかがでしたでしょうか。かなりシンプルな方法でメッシュの一部の色を変更できることがお分かりいただけたかと思います。
今回の記事はテクスチャマスクの基礎を説明するため、非常にシンプルなノード構成でお話させていただきました。より実践的なテクスチャマスクの利用方法については下記EpicのUE公式解説ページをご覧ください。
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/using-texture-masks-in-unreal-engine
以上、最後までお読みいただきありがとうございました!!