【UE5】スプラインメッシュに沿った動的表現を作る(Spline正規化UVとDynamic Material Instance制御)
本記事は「Unreal Engine (UE) Advent Calendar 2024」22日目の記事です!
Spline Meshで作れる表現
先日Xに投稿したこちらの内容の技術まとめメモとなります
↓Spline Meshとは、ざっくりいうとUnreal Engineがパス(Spline)にメッシュをいい感じに沿わせてくれるような機能です
Web上で調べると特に、「道路」や「目的地までのルート」作成の事例が多くありました
今回はこれを応用した、「基本的なSpline Meshの作り方」 と 「Dynamic Material Instanceでの動的なマテリアル制御をするまで」 の簡単なメモとなります
(ちょこちょこ追記するかもです)
参考
基本はこちらを参考にしました
(2018年の動画でしたがとてもわかりやすかったです ありがとうございます!!)
前提(今回説明すること、しないこと)
今回は中~上級者向けかと思います (細かい内容はとても長くなるので割愛)
<説明する>
- Spline Mesh作成の基本的な内容
- Dynamic Material Instanceに動的に値を送るBP構造
<説明しない>
- Splineの作り方
- マテリアルの組み方、応用方法
- BPのノードや変数の作り方
1.基本的なSpline Meshの作成方法
あまり細かい説明はややこしくなりそうなので、基礎はわかる前提でサクサクとまとめていきます
1-1.任意のSplineの作成
わかりやすいように任意のパスを作成しておきます(「UE Spline」など検索)
1-2.Construction Scriptの構成(Blueprint)
シーンビューでも確認できるように、Construction Scriptで組まれている資料が多かったです
↓要注意項目 忘れずに設定
<変数はこちら>
DynamicMaterialsは配列
<ノードの拡大版はこちら>
1-3.添わせるメッシュ、スケール
変数の「Mesh」にはシンプルなチューブのStaticMeshを入れておきました
変数「MeshScale」でメッシュの幅が調整できるので、任意で設定でOKです
1-4.Materialの作成(簡易ディゾルブは後で使います)
マテリアルは、Blueprintから受け取った「UVstart」「UVend」の値を元に「UVRemap_0-1_ToRange」というノードでUVを作成しています
MIを作成して、先程のBP内の変数「MeshMaterial」に入れておきます
1-5.Splineに沿ったグラデーションメッシュができたことを確認
この時点で最初にパスを作成したシーンを見ると、このようなパスに沿ったグラデーションメッシュができていることが確認できると思います
2.動的にディゾルブする
あとは各区間のDynamicMaterialに対して「Dissolve_Strength」など任意のパラメータ値を送ってあげればOKです
以下は、ゲーム開始時にTimelineで「Dissolve_Strength」に値を送る例
<イメージ図はこちら>
3.(おまけ)スプラインの位置の取得
「Get Transform at Distance Along Spline」ノードなど使用すると、Spline上の距離に応じた位置を取得できそう
↓ワールド座標を取得してマテリアルに送っている例
このSpline上の位置をもとに、WPOのマテリアルを組んであげれば
このようにSpline上の現在位置に応じたメッシュの変形、発光も可能になる
まとめ
Unreal EngineのSpline Meshという機能については、今回始めて知りましたが使用するとVFXでもかなり面白い表現ができるのがわかりました
(正直これの解説動画が2018年などで、そんな前からできた表現だったのかとびびった…;)
- 「Spline上の距離や位置の情報を、Dynamic Material Instanceで使えて」、
- 「Splineの長さで正規化されたUVが使える」ので
VFXのマテリアルでもかなり自由度の高い表現に応用できそうだと可能性を感じました!!
またこれを使って何かエフェクト作ってみようと思います
最後までお読みいただきありがとうございました!
ーーー
p.s.
昨年のアドカレの記事はかなり長く書いてしまったので、
今年は意識的にかなりコンパクトにまとまるように頑張ってみましたm(__)m
どこまで解説するかの見極めは結構難しいですね;;
普段SNSなどでもゲームエフェクト関連の投稿しているので良かったら覗いてフォローしてもらえると嬉しいです!
ーーー
Discussion