1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【UE4】マテリアルのUV座標によるグラデーションをイジってみたメモ

Last updated at Posted at 2021-12-16

特にUMGでマテリアルのUV座標ノードを使ってグラデーションをつけるのは常套手段である。
ドット・バイ・ドットでのきれいなグラデーションを付けられるし(語弊アリ)、いろいろなサイズのグラデーションテクスチャを作らずに済む。

ここに、ただリニアに変化するだけのグラデーションだけでなく、色の変化の割合などを操作する方法をメモしておく。

要するに、すぐ忘れてしまう自分向けのメモです。

参考サイト

シンプルなグラデーション

良くあるパターン。
TexCoordのRチャンネル(U方向)かGチャンネル(V方向)をAlphaにして、2色をLerpする。

image.png

こういう絵になる。
※V方向のグラデーションはComponent MaskをGチャンネルに変えればOK。

image.png

Powerでコントラストをつける

Epic公式サンプルのマテリアルでもPowerノード(べき乗ノード)を使ってコントラストをつけるパターンは多い。
ここでもPowerノードを使ってお手軽にコントラストをつけてみる。

image.png

パラメータContrastが1の時、リニアなグラデーションと同じになり、1より小さければグラデーション開始側に寄り、1より大きければ逆側に寄る。

image.png

Easeでコントラストをつける

そもそもPowerによる式はEase Inの式と同じ。であれば、Ease OutやEase In/Outも用意すればグラデーションにバリエーションを出せるであろう、という考え。
結果は下の図のような感じ。
Ease InはExpが大きくなるにつれ水色が強くなっていく。Ease Outはその逆。
Ease In/Outはそもそも0.5を境にEase InとEase Outを切り替える仕組みなので、中央(0.5)に寄っていく。

image.png

マテリアルでのEaseは、BlueprintのEaseノードのC++コードを参考にして(目コピして)、マテリアル関数を用意した。

マテリアル関数 MF_EaseIn

image.png

マテリアル関数 MF_EaseOut

image.png

マテリアル関数 MF_EaseInOut

Ease In/Outはアルファ値0.5でEase InとOutを切り替える必要があり、ノードグラフで組むよりHLSLのほうが書き易かったので、Customノードを使用した。

image.png

Customノード「[HLSL] Ease In Out」の中身はこちら:

float Alpha = saturate(InAlpha);
return (Alpha < 0.5)
? lerp(0.0, 1.0, pow(Alpha * 2.0, InExp)) * 0.5
: lerp(0.0, 1.0, 1.0 - pow(1.0 - (Alpha * 2.0 - 1.0), InExp)) * 0.5 + 0.5;

グラデーションの回転

グラデーションの回転は、ヒストリアさんのUMGで使えるシンプルなグラデーションのつくり方あれこれを参考にさせていただきました。

例えば、グラデーションを45度回転させると、グラデの端(水色と青)がウィジット矩形の端に来ず、グラデーションしていない面積が増えてしまう。
上記のヒストリアブログには、これを対処するための、傾きによってグラデーションをスケールさせてやる方法が載っている。

image.png

  • 【左: Default】シンプルにUVを45度回転させただけのもの。
    • 黒い矩形が元のUV(0,0)-(1,1)に相当する。
    • 黒い矩形の外側はアルファ値が負の値(0側)や1より大きい値(1側)になってしまう。
    • ※上の図はアルファ値を0と1の間にクランプしてある。
  • 【右: Normalized】ヒストリアさんの方法でウィジットの矩形の端が必ずアルファ0, 1になるように元のUV(0,0)-(1,1)をスケールさせたもの。
    • ざっくり sinθ+cosθ 倍すればよい。

動画で見ると挙動が分かりやすい:

20211216_01_NomalizedGradients.gif

マテリアルグラフ

image.png

マテリアル関数 MF_RotateGradients_Normalized

image.png

おまけ

20211216_02_FontGradients.gif

(おわり)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?