見出し画像

[UE4] [UMG] UIデザイナーのマテリアル基礎。「グラデーションその3 画像を使う」

UIデザイナー向けの、UMGのデータの作り方を紹介しています。

前回の記事はこちら...

今回のテーマ

1回目で紹介した LinearGradient は、
明度差のあるグラデーションに角度をつけると、暗い方の色が溜まった感じになるんです。(※これは描画時のガンマ補正のせいなのですが、話が長くなりそうなのでまたの機会に)

画像1

2回目で紹介した Curve と CurveAtlas を使った方法は、
機能的には問題ないのですが、希望通りの色を作るのに時間がかかったり、アトラスの管理が面倒だったり...(個人の感想です)

ではこの3回目は?
ベタにPhotoshopで作ったグラデーション画像を使います。

「Photoshopでグラデ。って、そんなの十分知ってるよ。」と言う方も多いと思いますので、以下は興味がある方のみお読みください。


作り方3 画像で作る グレイスケールx色

まずは作り方。
基本的な考え方はその1 と同じです。
色をグラデーションのアルファで抜きます。
グラデーション部分を画像に置き換えて、階調の編集を自在にできるようにします。

また、画像ファイルは、RGB3チャンネルあるので、
3種のグレースケールをつくり、これを各チャンネルに格納します。
以前紹介した方法です。

Photoshop

元画像を作ります。
 ファイル > 新規作成 でファイルを作成。大きさは...
 幅は 256px
 高さは 4の倍数以外の値
です。

幅 256px は、
0~255の値の変化が確認しやすいので。
高さは、
4の倍数にするとDXT圧縮が可能になってしまうので...
何かの事情(例えば、プロジェクト終盤で「テクスチャは一旦全部圧縮!」なんて事態)で圧縮されてしまうのを避けるためです。
あと、ぎりぎりまでファイルサイズを削る場合は、高さを1pxにしますが、そこまでの必要がなければ、数ピクセルの高さは持たせます。これは、グラデーションの具合を確認する際に、256 x 1 だと細すぎてわかりにくく、作業効率が落ちるからです。

画像2

(上 256x1 px、下 256x6 px 上は細すぎて明度変化がわかりにくい)

1つ目、リニアなグレースケール

0から255まで値が1づつ上がっていくリニア(直線的な)グレースケールを作ります。

Photoshopでグラデーションを作成します。  
 左側が 0 右側が 255 になるように作ってください。

できたグラデーションの値を確認してみましょう。
画像の幅256pxなので、
 カーソルの X軸の位置 -1 = 色の値
になってほしいのですが
...どうやら値があいません。
下図のように、192pxあたりでは202だったりします。

画像14

これは、Photoshopのグラデーションの”滑らかさ”という機能が補正しているからです。
こちら、デフォルトが100%で、初期値から補正がかかっています。
わかりやすくするために図を用意しました。
見比べると、
100%のほうが両端の黒い部分・白い部分が幅広く、
0%のほうが狭いです。

画像3

滑らかさ”は下のようなカーブで、値を上げると最初と最後の変化が緩くなります。
なかなか便利な機能なのですが、今回はリニアなグラデーションを作るのが目的なので 0% にします。

画像5

次は、両端を確実に0と255にするために、塗りつぶします。
レイヤーを2つ用意して、
右端を値 0 で、
左端を値 255 で塗ります。

画像11

最後に、
3つのレイヤー(グラデーション、左端、右端)をグループ化して、カラーオーバレイ #FF0000で乗算
そのグループをもう一度グループ化して、ブレンドモードを ”覆い焼き(リニア)加算” にします。

画像7

一つ目のグレースケールができました。

画像12


2つ目は、”滑らかさ”100%で

次は”滑らかさ100%”で作ってみましょう。

作成したグループ("R")を複製します。複製元は作業の邪魔になるので非表示にします。
Gチャンネルを使うのでファイル名等を R から G に変更します。
カラーオーバレイの色を #FF0000 から #00FF00に変更します。

画像9

左右の端の、色の変化のない部分を、少し広くします。
幅 8px にしました。

画像8

左右端を幅8pxづつとったので、メインのグラデーション部分の幅を240pxに変更します。

画像14

グラデーションの”滑らかさ”を 100% に変更して、2つ目ができました。

画像13


3つ目は、ガンマ補正を打ち消すグラデーション

このページの最初で、「ガンマ補正のせいで暗部の色が溜まった感じになる...」と書きました。

UE4は描画時に下図のような補正がかかっているので、

画像10

これにを打ち消して、描画時に階調がリニアに表示されるグラデーション、下図のようなカーブのグラデーションを作ります。

画像11


まずは、最初に作ったRのグループを複製します。

Bチャンネルを使うのでファイル名等を R から B に変更します。
カラーオーバレイの色を #FF0000 から #0000FFに変更します。

画像15

トーンカーブを追加します。

画像16

プロパティタブでトーンカーブを編集します。
カーブの制御点を追加して以下の値を入力してください。
(若干の誤差はあります)
入力 32 出力 4、
入力 64 出力 13、
入力 96 出力 29、
入力 128 出力 55、
入力 160 出力 92、
入力 192 出力 136、
入力 224 出力 192。

画像17

これで3つのグラデーションができました。
Photoshopでの作業は終わりです。

非表示にしていたグループを表示して、ファイルを保存します。
(保存形式は.pngでも.psdもかまいません)

画像18


ここからはUE4

UE4に画像を読み込みます。
コンテンツブラウザにファイルをドラッグ&ドロップします。

画像21

ファイルをダブルクリックで開いて、以下のように設定します。
色の値が変わると困るので、非圧縮のUserInterface2Dにします。

CompressWithoutAlpha:チェック
圧縮設定:UserInterface2D 
sRGB:なし
X/Y-axsisTilingMethod:Clamp
Filter:Bi-Linear
TextureGroup:UI

画像22

保存します。

マテリアル

新しくマテリアルを作成します。
コンテンツブラウザ上で右クリックでメニューから、
 マテリアル・テクスチャ > マテリアル を選びます。

マテリアルを開いて、左下の詳細タブを設定します

MaterialDomain:UserInterface
BlendMode:Translucent

画像21


必要なノードを配置します

Constant3Vector (グラフエリアで [3]キー+ 左クリック)を2つ、
Lerp (グラフエリアで [L]キー+ 左クリック)。

グラデーション画像をグラフエリアにドラッグ&ドロップします。

画像22

色を設定してノードを各々つなげます。
TextureSmple からのピンはとりあえず R からつなげましょう。

画像23

角度をつけます

CustomRotator、TextureCoordinate、Constantを配置し、以下のようにつなぎます。Constantの値は、0~1が0~360度です。0.125は45度。

画像24

確認

3種のグラデーションを確認しまます。
TextureSample と Lerp をつなぐピンを R, G, B で付け変えて具合を確認してみましょう。

下図の一番左は、元のデータはリニアですが、描画時にガンマ補正がかかっており、最初に作ったLinearGradientノードのものとほぼ同じになっています。
一番右は、逆補正です。0~255までリニアに明度が変化しているのがわかると思います。

画像25


ちなみに、逆補正は"Power"ノードを使う方法もあります。
Powerノードを使ったほうが簡単なのですが、今回はトーンカーブの練習ということで。こちらは別にまとめました。↓


もうちょっとだけ、

グラデーションに帯状の縞のトーンジャンプが見えてしまうことがあります。そんなときは、ノイズを加えてトーンジャンプを抑えましょう。

VectorNoise

VectorNoise、Lerp、Consatant を以下のようにつなぎます。
Constantの値を変更していい感じの値を探しましょう。

画像26

まとめ

今回は3種類のグレイスケールからグラデーションを作りました。
必要に応じて、自分好みのグレースケールを作って、組み替えるとよいかと思います。

次回!

さてさて、グラデーションについては全3回のつもりでしたが、
今回の内容が予想外に多くなってしまったため、もう1回やります。
とはいえ、そんなに書くこともないので、内容はおまけ程度です。

次回は、カラー画像のグラデーションです。





この記事が気に入ったらサポートをしてみませんか?