はじめに
Epic Forum Snippet 元ツイート
私が以前TwitterとEpic Forumに上げたGeometry Script Blueprintの解説になります。
制作環境
- Unreal Engine 5.1.1
- 公式のGeometry Scriptプラグイン
Geometry Scriptの使い方
Geometry Script専用のクラスがあるので、ブループリント作成で
GeneratedDynamicMeshActorを選びます。

イベントノード On Rebuild Generated Mesh が開始点になります。
ブループリントの変数などをいじったら自動でメッシュを更新してくれます。
そして下で参照できるのはダイナミックメッシュで、これに対していろいろ編集していきます。


基本のノードとしてトランスフォーム、マテリアルの編集などなどがありますが、今回は Append Simple Extrude Polygon というノードをベースにしていきます。

たくさんのインプットがありますが、このノードの機能は、
-
Polygon Verticesで入力するVector2DのArrayを点繋ぎみたいに平面作成 - 作った平面を
Heightの高さまで押し出しをする
の2つがメインです。
試しにこのようにArrayを入れてみるとキューブができあがります。

recompute normalノードでノーマル方向を平均化させて影が直せます。
2Dの形であれば基本なんでも作れますが、Vertexの位置を手入力するわけにもいかないので
Splineで場所の制御をしていきます。
Spline Component
同じブループリントにSpline Componentを追加し、
Get Location at Spline Pointノードや
Get Location at Spline Input KeyでSplineの場所を取得します。
Spline Pointはポイントの場所を直接取る
Spline Input Keyはポイントとポイントの間なども取れる

Z軸の情報はAppend Simple Extrude PolygonのHeightで入力していきますので使いません。
実装
これで手札は揃いました。
Splineで決めた場所を一個ずつVector2D Arrayの変数に保存して、Append Simple Extrude Polygonに入力すれば簡単にメッシュの形を決めることができます。

結果がこちら

Splineポイントは
Alt+ドラッグで追加できます
Static Meshに変換
私の経験上ですがGeometry Scriptはまだ不安定で、ランタイムでよくクラッシュするので、メッシュの形を決めたあとブループリントをStatic Meshアクターに変更した方が安心します。
ただしStatic Meshに変更したら形は固定になるのでご注意ください。

考えられる改善点と割愛したところなど
- 壁などZ軸が変化するメッシュは作れません
- Splineの曲線、カーブに沿っていない(こちらはUnreal forum Snippetで上げたバージョンにて実装しています、気になる方はぜひチェックしてください)
- Splineの位置がマイナス方向に設定された時、面の向きが内側になることがある(
Append Simple Extrude Polygon>Primitive Options>Flip Orientationで治ります) - メッシュのUV、マテリアル設定(Unreal forum Snippetバージョン)
- Boolean機能を使ってメッシュを切り取り、縁をつくる(Unreal forum Snippetバージョン)
- Vectorで直接Vertexの位置をZ軸まで決めれるノードがあるかもしれません