Gaming Life

一日24時間、ゲームは10時間

UE4 メッシュの一部の色だけをパラメータで切り替えられるマテリアルを作る

unrealengine.hatenablog.com

 上記のブログ等で物体全体の色をパラメータで切り替えるなどは紹介されているが一部だけの色を切り替えるみたいなものは見つけられなかったのでそれを自前で実装した。マテリアル全体の構成は以下の通り。

 ちなみに今回、マテリアルはSubstancePainterで作成した。

f:id:ai_gaminglife:20180704015038p:plain

テクスチャの色域を指定してマスクテクスチャを作る

f:id:ai_gaminglife:20180704015051p:plain

 Photoshop等でマスクテクスチャを用意するのが最も簡単だろうが今回はマテリアルエディタ内でマスクテクスチャを作ってみる。

 抜き取りたい色を "Const3Vector"で用意。それを "Distance"のBに繋ぐ。

 このままではグレーの部分が出てしまうのでifノードを使って0と1でくっきり分ける。これで紫部分をくり抜けるマスクテクスチャを作ることが出来る。

一部分だけ色を変更したテクスチャを作る

f:id:ai_gaminglife:20180704015100p:plain

 "JumpColor"という3Vectorパラメータを作成。この色で紫部分を塗りつぶす。

 生成したマスクテクスチャと"JumpColor"を掛け合わせ、反転させたマスクテクスチャと元々のBaseColorテクスチャを掛け合わせたものを足すことで一部だけを"JumpColor"で塗りつぶすことが出来る。

Switchでもとの色と塗り替えた色を切り替える

f:id:ai_gaminglife:20180704015108p:plain

 Static Boolパラメータ、"IsJump"を用意。これをSwitchノードのValueに繋ぎ、Trueに"JumpColor"で一部を塗りつぶしたテクスチャを、Falseに元々のテクスチャを繋ぐ。

 これでIsJumpの切り替えで一部の色だけを切り替えるマテリアルが作れた。

f:id:ai_gaminglife:20180704015116p:plainf:id:ai_gaminglife:20180704015120p:plain

(続き)

ai-gaminglife.hatenablog.com