執筆バージョン: Unreal Engine 5.3
|
ボンジョルノ!どうも3Dアーティストの千葉です。
今回はマテリアルのWorld Position Offsetを使ってメッシュをスケールさせる方法をご紹介します。
ノードの組み方
やり方はとっても簡単でActor PositionからWorld Positionを減算した値を乗算で増やしたり減らしたりするとスケールされます。
そのままだと0が元の大きさで負の値で拡大、正の値で縮小になっているので、One Minusを挟んであげるとアクターのトランスフォームのように1を基準にスケールできるのでオススメです。
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/2023-11-21_12h25_21-1024x592.jpg)
考え方
動かしたい頂点の位置とスケールの基準点の差分が分かればその値を増減させることでスケールができます。
2次元で図にすると以下のような感じです。
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/Scale_Logic-1024x1024.jpg)
3次元でも同じように考えることができるので、スケールの基点=ピボットの位置としてActor PositionからWorld Positionを減算しています。
応用
乗算するパラメーターをVectorにするとXYZを別々にスケールすることができます。
RGBがそれぞれR=X、G=Y、B=Zに対応しています。
Timeノードを使って周期的に変化させることもできます。
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/20231121142250.jpg)
ちなみに1以上のスケールにするとメッシュがBoundsの範囲を超えて描画がチラつくので、1以上の大きさにする場合はBounds Scaleの値を大きくしましょう。
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/20231121143743.jpg)
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/BoundsScale.jpg)
おまけ
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/20231121160352-1024x433.jpg)
まとめ
簡単な拡縮アニメーションならBlueprintを使わなくてもマテリアルだけでできるので、みなさんもぜひお試しあれ!