見出し画像

UE5/UEFNマテリアルで作る流れるデジタル警告サイン #10

本記事に興味を持っていただきありがとうございます。

今回は、マテリアルを使って以下のような流れる警告サインを作っていきます。

最終結果

今回使用するアセット

警告用テクスチャ

よりデジタルさを表現するためのテクスチャ

警告板となるメッシュ

これら3つダウンロードしてプロジェクトにインポートしましょう。


新規マテリアルを作ろう

新規マテリアルM_Warningを作り開きます。

M_Warning

今回のような表現をマテリアルで行う場合、複数の方法がありますが、
本記事では、白黒画像を使用するので、黒色の部分を透過させます。
M_Warningマテリアルの以下の設定を変更します。
Blend Mode Opaque → Masked
Shading Model 
Default Lit → Unlit
Two Sided □ → ✓

マテリアル基本設定の変更

Maskedについては、以下の記事で簡単に紹介しています。

Shading Model
Shading Modelとは、マテリアルに光が入った(入射光)時にどのように反射させるかを制御します。

Unlit
Unlitとは、基本的に火や光を発するオブジェクトなどに使用します。

Two Sided
Two Sidedとは、マテリアルを適応するオブジェクトの裏側(裏面)にも表示させます。

変更後は、以下の通りです。

変更後

Texture SampleノードにT_Letterテクスチャを追加して、
パラメーター化します。
パラメーター名はLetterにしています。

テクスチャノードの追加とパラメーター化

左右に文字を動かすために、Pannerノードを追加して動きの方向速度を調整するために、Parameterノードを2つ追加します。
Parameterノードはショートカットキー(Windows)キーボードの
S+左クリックで追加できます。
Parameter名
Speed X
Speed Y

PannerノードとParameterノードの追加

続いて、Appendノードを追加して以下のように繋ぎます。

Appendノードの追加とピンの接続

なぜAppendノードが必要か?
テクスチャには、UVと言う概念があり値は
U(横方向(X))V(縦方向(Y))になります。
UVに関しましては、以下の記事で紹介しています。

少しUVの実験をしてみます。

LetterノードをStart Previewing Nodeして、プレビュー画面のオブジェクトをSphereからPlaneに変更します。

Start Previewing NodeとSphereからPlane

Speed Xの値に1を入れると、縦方向にテクスチャが動きます。
Speed Yでは、横方向に動きます。
XとYの両方に1を入れると、斜め左上に向いて動きます。
数値を上げれば、スピードが速くなります。

X方向とY方向

それではAppendノードを飛ばして、SpeedXSpeedYを順番にPannerノードに繋いでみます。

結果は、斜め左上にしかテクスチャが動きません。

値が1つだと左上にのみ移動

今回は、横に(X方向)にだけテクスチャを動かしたいので、
Appendノードを使用して独立した値(SpeedXとSpeedY)が必要になることがわかります。

Pannerノードの動きを理解したところで、
Speed Xの値を0.03にして、Speed Yを0にします。

動的テクスチャの完成

ここまでテクスチャ全体を動かしました。
続いては、テクスチャのオフセットをずらします。

テクスチャのオフセットをずらそう

冒頭の完成動画でもわかるように、
T_Letterテクスチャには3種類の警告文が書かれています。
しかし現在は、3種類全て表示されています。

警告文のテクスチャ

これを、テクスチャのオフセットをずらして調整します。

冒頭でインポートしたメッシュ、SM_Warning_Tapeをビューポート上に配置し、マテリアルのプレビューをSM_Warning_Tapeにします。

ビューポートに配置

SM_Warning_Tapeを選択したまま、マテリアルエディターに移動します。

SM_Warning_Tapeを選択したまま

マテリアルエディターのプレビューの一番右下のアイコンをクリックします。
すると3行あった警告文の1行のみ表示されています。

1行のみ

- 補足 -
本記事とは関係ないですが、このメッシュ(SM_Warning_Tape)はDCCツールで必要に応じてUV展開しております。

これで、警告文が一行のみ表示されました。

オフセットをずらすノードを組む

オフセットをずらすために必要なノードです。
Parameterノード → UV X
Parameterノード → UV Y
Multiplyノード → Bの値に0.05
Clampノード
Appendノード
Addノード
以下様に、ピンをつなぎます。

オフセットをずらすために必要なノード

上の画像を見てもわかるように、オフセットのずらし方もaddノードを使い、最終的にはテクスチャのUVに入力しているので、
2つ
の値U(X横方向)とV(Y縦方向)が必要となり、
その為にParameterノードを2つ用意しました。

Clampノードとは

Clampノードは入力された値を0(Min)~1(Max)の範囲以内で出力します。

- 例 -
現在Clampノードの前にMultiplyノードがあります。
MultiplyのAの値に4、Bの値に0.05(4×0.05=0.2)0.2となりClampから出力される値は0.2です。
もしMultiplyのAの値に24、Bの値に0.05(24×0.05=1.2)1.2となり1を超えたので、出力結果は1になります。

0以下は、すなわち負数の場合は全て0で出力されます。

Clampノード

※MinとMaxの値は変更可能

今回は警告文が縦並びなので、Yに値を入れると警告文のオフセットがずれます。

縦方向に文が並ぶ

UV Yの値に、を入れてみましょう。
以下のように2番目の警告文が表示されます。
を入れると3番目の警告文が表示されます。

オフセットをずらす

どの様に動いているか動きを確認するために、一度プレビューのメッシュをPlaneにもどしLetterテクスチャStart Previewing Nodeを行います。

オフセットのずれを確認

UV Yに4と8を入れると、表示させたい警告文が順に上に移動(ずれて)います。

今回は4の倍数で順にずれる

この方法でオフセットをずらして、SM_Warning_Tapeに表示させたい警告文を表示させています。


Multiplyノード値ですが、Bの値に0.05が入っています。
Bの値を細かくすれば、オフセットはより小刻みに動かすことができます。
Bの値は固定して、Aの値で動かすようにすると調整しやすいです。
今回はAの値(UV Y)は4の倍数でBの値が0.05がちょうどいいのでそのようにしています。

B値は固定

しかしMultiplyのA値に4の倍数を入力しても、12と16の時は何も表示されません。
それは下の画像を見てもわかる通り12と16には何も入って無いからです。

空の場所がある

さらにUV Yに20以上の数値を0.05で掛けると全て1以上になるので、
そもそもオフセットがずれない、すなわち元の状態(0)になります。

大事な箇所なので繰り返しますが、今回の条件でテクスチャのオフセットをずらす場合、Clampノードの出力範囲が0~1なのでUV YとMultiplyの結果が
0、0.1、0.2….. ~ …..0.8、0.9、1になる必要があります。

テクスチャのオフセットのずらし方を理解したところで、デジタル感を演出ために文字をドット風にします。

文字をドット風にしよう

必要なノードです。
TexCoordノード
Parameterノード → BG Tiling(250)
Texture Sampleノード → BG Dot

冒頭でインポートしたテクスチャ(T_Digital_Dot)をマテリアルに追加してパラメーター化します。
各ノードの繋ぎ方は以下の通りです。

文字をドット風にするためのノード

TexCoordノードでテクスチャのスケールが変更できます。
その調整度合いを、BG Tilingに入力する値で調整します。
では、BG DotをStart Previewing Nodeして、
実際にどのようにテクスチャが変化するのか確認してみましょう。

テクスチャタイルの調整

BG Tilingの値を大きくすればするほど、ドンドン細かくなっていきます。
これを使用してデジタル風にしていきます。

Lerpノードを新たに配置して、以下の様に繋ぎます。

Lerpの追加

Lerpに関しては、以下の記事で紹介しています。

LerpでStart Previewing Nodeを行いBG Tilingの値を大きくします。

小さくて分かりにくいですが、警告文に縦と横と線が入ってデジタル風になりました。

デジタル風の文字

現段階で、マテリアルプレビューがPlaneになっていると思うのでSM_Warning_Tapeに戻しておきましょう。

PlaneからSM_Warning_Tapeに戻す

最後に文字を発光させます。

文字を発光させよう

以下の様にノードを追加して、ピンを繋ぎます。

必要なノードです。
Multiplyノード 2つ
Parameterノード → Emissive Power(0)
Constant3Vectorノード → コンバート化して名前をEmissive Color

必要なノード

Lerpの最終結果をMultiplyに入力して、Emissive Colorで好きな色に変更します。
さらに次のMultiplyのBの値(Emissive Power)を調整することで発光の強さが変更できます。

好きな色と発光の調整


以下マテリアルの全体像です。

完成

マテリアルインスタンス化してメッシュに適応しよう

M_Warningは、Paramerterノードを複数使用しているマテリアルなので、インスタンス化します。
マテリアルインスタンス名 MI_Warning

マテリアルのインスタンス化(MI_Warning)
MI_WarningをSM_Warning_Tapeに適応

MI_Warningを開き、各値を調整します。
自由に調整してください。

MI_Warningを調整

ワールド内の環境光を暗くするとより雰囲気がでます。

最後に

今回の内容は、マテリアル製作で様々なことに応用可能です。
警告文のテクスチャを変えたり、四角で表現しているデジタル風文字を丸に変更したりいろいろ試して見てください。

いいなと思ったら応援しよう!