UEでランタイムにメッシュ変形がしたいぼくの365日間戦争 #ue5 - Qiita

これはUEでランタイムにメッシュ変形をしようとした人間の長い戦いの記録である
結論だけ見たい人はここまで飛んでください。

Geometry Scriptとの出会い

Geometry ScriptはUE5で追加された機能で、Lyraサンプルにも使われているメッシュに穴をあけたりゲートの位置をずらしたりできるとにかく便利なやつである。

公式ドキュメント Geometry Scripting User Guide

MeshのBoolのコミュニティチュートリアルとか
つべの動画とか
いろいろチュートリアルが出ている。

基本的な動作として、

Geometry Scriptプラグインを有効にする
image.png
GeneratedDynamicMeshActorを追加する
image.png
On Rebuild Generated Meshで元となるボックスを出す。
image.png
Cylinderとかを追加してBool演算する
BP_OldSystem-EventGraph.png
大体こんな構成がチョイスされている。
PIEで実行してみるとちゃんと動いているように見える。
GeometryScript プレビュー [NetMode_ Standalone 0]  (64-ビット_PC D3D SM6) 2025-04-18 10-28-03.gif
Runtime Geometry Scriptをうたった動画やチュートリアルは大体ここで終わっている。

イヤーできたできた。このブログここで終わりっすわ

そんなわけがない

そんなことで終わるならこの記事は爆誕していない。
この手法には重大な欠点があり、それは

Generated Dynamic Mesh Actor 関数は、現時点ではエディタ専用である
image.png
という点である。

こいつはPIEだからいいように動いて見えただけで、実行ファイルにするとたちまち動かなくなるのである。(5.5現在も)ドキュメントはちゃんと読みましょう。
image.png
▲スタンドアロンでプレイしたら喪失した図

これが判明し、1年近くOn Rebuild Generated Meshを使用していないMesh変形を行う手法を探し続けることになるのであった…

唐突な出会い

日課の検索を行ったところ、ふいにこの動画に出会った

実行ファイルで動いている…だと…????
とりあえず一周してみたところ、確かにOn Rebuild Generated Meshを使っていない。

というわけで組んでみる

まずDynamic Mesh Actorを新しく作成する。Generatedではないので注意
image.png

Construnction ScriptでGet Dynamic Meshし、リセットしてからBoxを追加
image.png
旧バージョンと大体同じようにCylinderを追加。
On Rebuild Generated MeshからTargetMeshを変数にしていないので代わりにGet Dynamic MeshでTarget Meshを取得
BP_NewSystem-EventGraph.png

とりあえずPIEで動いていることを確認
GeometryScript プレビュー [NetMode_ Standalone 0]  (64-ビット_PC D3D SM6) 2025-04-18 11-45-24 - frame at 0m25s.jpg

真価が試されるのはここから。Standaloneで起動!先ほどは消えてしまったが…

GeometryScript (64-bit Development PCD3D_SM6)  2025-04-18 11-48-22.gif

キャー!動いたー!!!(黄色い声)

ついでにパッケージ化もしてみる。
GeometryScript   2025-04-18 11-54-14.gif

キャー!動いたー!!!(2回目)

結論

GeneratedDynamicMeshActorとOn Rebuild Generated Meshはトラップである
きっと誰かが穴掘ったりするゲームとか切削シミュレーターとか作ってくれるのを楽しみにしてます。



フラッグシティパートナーズ海外不動産投資セミナー 【DMM FX】入金

Source link