見出し画像

[UE4] [UMG] UIデザイナーのマテリアル中級。動かす4「複合・前編」

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

今回の内容

動かすというテーマで「角度」、「位置」、「スケール」について紹介してきましたが、4回目は「複合」です。

角度、位置、スケールを合わせて使いたいときのノードの組み方について紹介します。

今回作るもの

2つのギアが回転しているマテリアルを作成します。

画像7

使う画像はこちら↓。
Rチャンネルに小さいギア、Gチャンネルに大きいギア。
ギアは垂直にずらすと歯が噛み合うように作っています。

画像8

チャンネルの使い方わからない方はこちらをご確認ください。

初期状態の確認

背景の位置確認用グリッド、色、マスクイメージの3つの要素を Lerp で合成しています。
最初は大きい歯車から作るので TextureSmaple の出力ピンは G を使ってください。

画像7


最初は大きい歯車から

まずは大きいギアを作ります。

グラフエリアの右端にベースマテリアルノードそして TextureSmaple
間をあけて左端に、TextureCoordinate を置きます。

TextureCoordinate と TextureSmaple の間に各要素( 角度、位置、スケール )を入れてノードをつなぎます。

画像7


歯車をぐるぐる回すので、
このシリーズ1回目の『角度』で作った回転アニメーションのノードをコピペします。(なければ作りましょう)

位置もずらすので、
このシリーズ2回目の『位置』で作ったノードを...
(こちらは"Subtract"ぐらいなので作った方が早いです)


というわけで、『角度』と『位置』のノード群を配置しました。

ペーストした2つのグループの両方に TextureCoordinate がありますが、こちらは不要なので削除します。

画像6


削除しました。
この後、左端の TextureCoordinate と、『角度』、『位置』の UVsのピン をつなぎます。

ここで問題です!

TextureCoordinate から各々の UVsのピン を通してTextureSmaple につなぐのですが、『角度』と『位置』をどの順で繋げば良いのでしょうか?

TextureSmaple のUVsには1本しか繋がらないので、並列には繋げません。


とりあえず、このまま繋いでみましょう。

画像6

どうやら、望みとは違う結果になりました。

画像7

『角度』→『位置』だった順番を、
『位置』→『角度』に繋ぎなおします。

望んだ結果になりました。

画像8

どの順番で繋げたらいいのか?

どの順番で繋げるべきか?
よくわからないですね。
考えやすくするためにウィジェットBPで組んでみます。

ウィジェットBPに、CanvasPanelを2つと Image を用意します。

CanvasPanelの一つに "Angle" と名前を付けて、Angleに適当な値を入れてください。

もう一つのCanvasPanelは "Position" と名前を付けて、Translation に適当な値を入れてください。

画像9

まずは、Angle / Position / Image の階層にしてください。

この場合は、
最初に回転して、
次に移動します。

画像10

次は、Position / Angle / Image の階層にしてください。

こちらは、
最初に移動して、
次に回転します。
今回、望んだのはこちらの状態です。

画像11

ノードをつなぐ順番を考えるときは、
 親階層になるものをTextureCoordinate の側に、
 子階層になるものを、TextureSmaple に側にする
と考えるとわかり易いです。

マテリアルに戻りましょう。

小さい歯車

次は小さい歯車を作りますが、その前にノードにコメントをつけたり大きさを調整したり、わかり易くなるように整理します。

小さい歯車も使うノードは同じなので、
TextureCoordinate から TextureSmaple までのノードを選択してコピー して、

画像12

ペースト。

画像13

Add ノードを用意して、そこに、
2つの TextureSmaple を足して、Lerpの入力Alpha につなぎます。
大きい歯車は TextureSmaple の出力ピンのG でしたが、
小さい歯車は TextureSmaple の出力ピンのR を使います。
2つの歯車が重なりました。

画像14

2つの歯車の調整

まずは、歯が噛み合うように位置を調整します。
大きい歯車の位置は、0 , 0.63 、
小さい歯車の位置は、0 , 0 にします。

位置は合いましたが、回転速度と方向が同じなので、歯が噛み合いません。

画像15

小さい歯車は歯の数が6枚、
大きい歯車は歯の数が12枚です。
歯車の数はちょうど倍なので...
小さい歯車の速度に2を掛けると速度があって、
マイナス値で回転方向が逆になります。

というわけで、Multiply で -2を掛けると、歯車はぴったり噛み合います。
これで、今後一つの値を変えるだけで、歯車の回転速度を調整できます。

画像17


不要になった大きい歯車の速度の値のノードを削除して、
見やすくなるようにノードを整理します。

ひとつ忘れていました。
2つのイメージを Add であわせる時、ただ形状を合わせたいだけの場合はAddの後に Saturate をいれます。
今回は2つのイメージが重ならないので不要なはずですが、念のために入れておきます。


画像17


前半終了

ここまでで前半終了です。
今回は、位置・角度などを調整したいときの、組み方の順序を紹介しました。

後半は、
噛み合った歯車をまとめて、
位置、スケール、角度を調整します。

というわけで、もう少々お付き合いください。



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