環境:UE5.4
作成マテリアル:M_UVScale
前書き
この章では「Multiply」と「ScaleUVByCenter」ノードをご紹介します。前回行ったUVスクロールに似た手法で、テクスチャを拡大・縮小する方法を解説します。
手法
UVに「Multiply」ノードを適用します。
デフォルト値は「1.0」なので、プレビュー上では変更が確認できません。
しかし、「2.0」に変更すると犬が縮ます。
「なぜ2倍にしたのにテクスチャが縮むのか?」と疑問に思う方が少なくないのでしょう。
UVの座標を見てみれば理解しやすくなります。
こちらのGIFをご確認ください。
各角の座標が2倍になり、中心の座標は(1,1)となり、テクスチャの右下の角が中心にずれました。計算後の右下の角の座標は(2,2)となり、テクスチャの領域外に出るため、表示されるものはありません。ここれにより、値が大きければ大きいほどテクスチャが縮小されます。
逆に「0.5」を「Multiply」ノードに入れれば犬が大きくなります。
テクスチャがWrap設定になっていれば、ワンコが拡大・縮小されながら複製されます。
Wrapに設定を変更してから、テクスチャを保存してください。
犬が4匹になりました。「Wrap」にするとUVの分離がより分かりやすくなります。サイズが2倍になるのではなく、数が横と縦にそれぞれ2倍になります。
もし数を増やしたくない場合は、「Clamp」に設定するだけです。
スケールの軸について
気付いたかもしれませんが、犬を拡大・縮小できても、スケールの軸が左上に固定されています。
UVの原点(0,0)が左上の角にあるためです。本来、スケールはテクスチャの中心で行いたいものです。
UEでは便利なノードが用意されているので通常はそれを使います。
このようにノードを繋げます。「Texture Scale」には直接に入力できないため、「Constant」ノードを検索して追加します。
原点の移動を考慮すると、「ScaleUVByCenter」の方が使いやすいです。用途によりますが、「Multiply」を使用する場合もあります。
興味があれば、「ScaleUVByCenter」がどのように作られているか確認できます。青いノードはダブルクリックすることで中を覗くことができます。
計算がやや複雑なのでそこはすべてを理解する必要はありません。気になるときに、時々ノードを開いて研究してみると良いでしょう。