見出し画像

【Unreal Engine】1つのマテリアルスロットしかないメッシュの一部分の色を変えるシンプルな方法

はじめに

いつも創作活動お疲れ様です。
本記事では「Unreal Engine」にて、1つのマテリアルスロットしかないメッシュの、一部分の色を変える方法について解説したいと思います。

EpicのUnrealEngine公式ページではマテリアルの詳しい内容についていろいろ解説いただいていますが、なかなか初心者の方には難しい部分もあるかと思います。
ですので本記事では極力シンプルにしたマテリアルノードで解説したいと思います。

難易度/使用ツール

難易度:初級(Unreal EngineのMaterialが何となくわかる程度)
使用ツール:Unreal Engine 5.4.4

※以降Unreal EngineについてはUE5と略します。

事前準備

UE5に対象となるメッシュのFBXファイルをインポートします。
今回私は下記のような、車のホイールのメッシュを用意しました。
DCCツール(Blender)にてUVも開いています。

図1: 今回説明に使用するメッシュ
図2: 後々使用するUVマップ

今回は、この車のホイールの「スポーク部分のみ」違う色にしたい、というようなシチュエーションを想定してみます。

作業

UE5にてベースマテリアルを作成

まずは以下のようなめちゃくちゃシンプルなノードのマテリアルを作成しました。

図3: ベースとなるマテリアルノード

これをとりあえずホイールのメッシュに適用します。

図4: ホイールに適用

現状では、このインポートしてきたFBXファイルにはマテリアルスロットが1つしかないため、メッシュの一部分のみ色を変更したいと思ってもかなり面倒だと思います。
DCCツールに戻って作業するのも時間がかかりますし、何よりいろいろなカラーバリエーションを用意したいとなったとき、そのバリエーション分だけテクスチャを用意していたのではプロジェクトの容量がとても大きなものになってしまいます。

そこで、今回は”テクスチャマスクを使用してUVマップの指定したメッシュ部分のみ色を変える”という方法を使ってみたいと思います。

マスク用のテクスチャ作成

まず、コンピュータの中では「黒色は0」「白色は1」の数値に変換されるということを頭に叩き込むことが重要です。
これを前提として、UVマップの中で「色を変更したい部分の面を白色に塗りつぶしたテクスチャ」を用意します。
図2のUVマップの中で色を変更したいスポーク部分を、下記のようにPhotoshopで塗りつぶしました。

図5: 色を変えたいスポーク部分を白色に塗りつぶしていく
図6: 実際に使用するマスク用のテクスチャ

出来上がった図6のテクスチャをUE5にインポートしましょう。

マスターマテリアルの作成

先ほど作ったマテリアルノードを以下のように変更してみてください。

図7:変更後のノード

ベースカラーのノードが変更されていますね。
途中に「Lerp」というノードがあると思います。(検索では正式名称の"LinearInterpolate"で出てきます)
このノードは何かというと、日本語では「線形補間」といい、”設定した2つの値(A、B)を(Alpha)の割合でブレンドして出力することができる”というものです。

文字にするとややこしいのですが、今回であれば「A」の入力部分にテクスチャマスクの黒色の部分(ベースカラーとしたい部分)、「B」の部分にテクスチャマスクの白色の部分(色を変更したい部分)が入ると覚えてください。

結果は以下のようになります。

図8: マテリアル適用

UVマップのうち、白の部分のメッシュのみ違う色にすることができました!
今回は割愛しますが、同じようにラフネスやメタリックなどほかのパラメータでも同じように接続すれば、異素材の組み合わせも可能になりますね。

要するに、「Lerp」ノードの(Alpha)にマスク用のテクスチャ、(A)にベースとなる値、(B)にベースから変更したい値、を入れるといろいろなことができる、というふうに覚えておくと応用が利くと思います。

マテリアルインスタンスの作成

いろいろなカラーバリエーションを作る場合は、マテリアルをインスタンス化しておくと便利です。

パラメータ化したい(後から数値をいじりたい)ノードの上で右クリックし、「パラメータに変換」を選択します。

図9: パラメータに変換

私はベースカラーのA,Bとラフネス、メタリックの値をパラメータ化しました。

図10: パラメーター化

パラメータ化できたら、今作成したマテリアルの名前を変更します。
今回はこれをマスターマテリアルとしたいので、私は「M_Wheel」としました。
※UEではマスターマテリアルの頭には「M_」を付ける慣習があるようですので、私もそれに倣います。

図11: マスターマテリアルの名前変更

出来上がったマスターマテリアルの上で右クリックし、「マテリアルインスタンスを作成」を選択します。

図12: マテリアルインスタンスを作成

マテリアルインスタンスが1つできますので名前を「MI_Wheel」とでもしておきます。
※マテリアルインスタンスの頭には「MI_」とつけるのが多いようです。

図13: マテリアルインスタンス

これ以降マスターマテリアルは触りませんので、不用意な事故防止のため、ホイールのマテリアルをマスターマテリアル「M_Wheel」からマテリアルインスタンス「MI_Wheel」に差し替えておきましょう。

図14: ホイールのマテリアル差し替え

マテリアルをインスタンス化すると、設定画面がノードではなく以下のような項目になり、先ほどマスターマテリアル側でパラメータ化した箇所のみが
触れるようになります。

図15: マテリアルインスタンスの設定項目

色などのバリエーションを増やしたい場合は、マテリアルを複数作るのではなく、この1つのマスターマテリアルから派生したマテリアルインスタンスを複数作ることにより、容量や負荷を節約することができます。

図16: マテリアルインスタンスごとのバリエーション例

さいごに

お疲れさまでした!
いかがでしたでしょうか。かなりシンプルな方法でメッシュの一部の色を変更できることがお分かりいただけたかと思います。

今回の記事はテクスチャマスクの基礎を説明するため、非常にシンプルなノード構成でお話させていただきました。より実践的なテクスチャマスクの利用方法については下記EpicのUE公式解説ページをご覧ください。

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/using-texture-masks-in-unreal-engine


以上、最後までお読みいただきありがとうございました!!


いいなと思ったら応援しよう!