UE4 メッシュの一部の色だけをパラメータで切り替えられるマテリアルを作る
上記のブログ等で物体全体の色をパラメータで切り替えるなどは紹介されているが一部だけの色を切り替えるみたいなものは見つけられなかったのでそれを自前で実装した。マテリアル全体の構成は以下の通り。
ちなみに今回、マテリアルはSubstancePainterで作成した。
テクスチャの色域を指定してマスクテクスチャを作る
Photoshop等でマスクテクスチャを用意するのが最も簡単だろうが今回はマテリアルエディタ内でマスクテクスチャを作ってみる。
抜き取りたい色を "Const3Vector"で用意。それを "Distance"のBに繋ぐ。
このままではグレーの部分が出てしまうのでifノードを使って0と1でくっきり分ける。これで紫部分をくり抜けるマスクテクスチャを作ることが出来る。
一部分だけ色を変更したテクスチャを作る
"JumpColor"という3Vectorパラメータを作成。この色で紫部分を塗りつぶす。
生成したマスクテクスチャと"JumpColor"を掛け合わせ、反転させたマスクテクスチャと元々のBaseColorテクスチャを掛け合わせたものを足すことで一部だけを"JumpColor"で塗りつぶすことが出来る。
Switchでもとの色と塗り替えた色を切り替える
Static Boolパラメータ、"IsJump"を用意。これをSwitchノードのValueに繋ぎ、Trueに"JumpColor"で一部を塗りつぶしたテクスチャを、Falseに元々のテクスチャを繋ぐ。
これでIsJumpの切り替えで一部の色だけを切り替えるマテリアルが作れた。
(続き)