Chapter 06無料公開

🔰UV拡大・縮小

Yukiya
Yukiya
2024.10.19に更新
このチャプターの目次

環境:UE5.4
作成マテリアル:M_UVScale

前書き

この章では「Multiply」と「ScaleUVByCenter」ノードをご紹介します。前回行ったUVスクロールに似た手法で、テクスチャを拡大・縮小する方法を解説します。

MultiplyNode.png::Multiplyノード
ScaleUVByCenter.png::ScaleUVByCenter.png::中心スケール

手法

UVに「Multiply」ノードを適用します。
デフォルト値は「1.0」なので、プレビュー上では変更が確認できません。
MultiplyApply.png::Multiplyをかける

しかし、「2.0」に変更すると犬が縮ます。

Multiply2.png::犬が縮んだ

「なぜ2倍にしたのにテクスチャが縮むのか?」と疑問に思う方が少なくないのでしょう。
UVの座標を見てみれば理解しやすくなります。
こちらのGIFをご確認ください。

Explain_ScaleUV_01.gif::UV座標の解説

各角の座標が2倍になり、中心の座標は(1,1)となり、テクスチャの右下の角が中心にずれました。計算後の右下の角の座標は(2,2)となり、テクスチャの領域外に出るため、表示されるものはありません。ここれにより、値が大きければ大きいほどテクスチャが縮小されます。

逆に「0.5」を「Multiply」ノードに入れれば犬が大きくなります。

Multiply0.5.png::犬が大きくなった

テクスチャがWrap設定になっていれば、ワンコが拡大・縮小されながら複製されます。
Wrapに設定を変更してから、テクスチャを保存してください。

WrapSettein.png::Wrap設定

WrapMultiply2.png::Multiply2倍

犬が4匹になりました。「Wrap」にするとUVの分離がより分かりやすくなります。サイズが2倍になるのではなく、数が横と縦にそれぞれ2倍になります。
もし数を増やしたくない場合は、「Clamp」に設定するだけです。

スケールの軸について

気付いたかもしれませんが、犬を拡大・縮小できても、スケールの軸が左上に固定されています。
UVの原点(0,0)が左上の角にあるためです。本来、スケールはテクスチャの中心で行いたいものです。
UEでは便利なノードが用意されているので通常はそれを使います。

ScaleUVByCenter.png::ScaleUVByCenter.png::中心スケール

このようにノードを繋げます。「Texture Scale」には直接に入力できないため、「Constant」ノードを検索して追加します。

ScaleUVByCenterApply.png::中心スケール手本

原点の移動を考慮すると、「ScaleUVByCenter」の方が使いやすいです。用途によりますが、「Multiply」を使用する場合もあります。

興味があれば、「ScaleUVByCenter」がどのように作られているか確認できます。青いノードはダブルクリックすることで中を覗くことができます。
FunctionContent.png::ScaleUVByCenterの中身

計算がやや複雑なのでそこはすべてを理解する必要はありません。気になるときに、時々ノードを開いて研究してみると良いでしょう。