はじめに
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軸まで決めれるノードがあるかもしれません