これはUEでランタイムにメッシュ変形をしようとした人間の長い戦いの記録である
結論だけ見たい人はここまで飛んでください。
Geometry Scriptとの出会い
Geometry ScriptはUE5で追加された機能で、Lyraサンプルにも使われているメッシュに穴をあけたりゲートの位置をずらしたりできるとにかく便利なやつである。
公式ドキュメント Geometry Scripting User Guide
MeshのBoolのコミュニティチュートリアルとか
つべの動画とか
いろいろチュートリアルが出ている。
基本的な動作として、
Geometry Scriptプラグインを有効にする
GeneratedDynamicMeshActorを追加する
On Rebuild Generated Meshで元となるボックスを出す。
Cylinderとかを追加してBool演算する
大体こんな構成がチョイスされている。
PIEで実行してみるとちゃんと動いているように見える。
Runtime Geometry Scriptをうたった動画やチュートリアルは大体ここで終わっている。
イヤーできたできた。このブログここで終わりっすわ
そんなわけがない
そんなことで終わるならこの記事は爆誕していない。
この手法には重大な欠点があり、それは
Generated Dynamic Mesh Actor 関数は、現時点ではエディタ専用である
という点である。
こいつはPIEだからいいように動いて見えただけで、実行ファイルにするとたちまち動かなくなるのである。(5.5現在も)ドキュメントはちゃんと読みましょう。
▲スタンドアロンでプレイしたら喪失した図
これが判明し、1年近くOn Rebuild Generated Meshを使用していないMesh変形を行う手法を探し続けることになるのであった…
唐突な出会い
日課の検索を行ったところ、ふいにこの動画に出会った
実行ファイルで動いている…だと…????
とりあえず一周してみたところ、確かにOn Rebuild Generated Meshを使っていない。
というわけで組んでみる
まずDynamic Mesh Actorを新しく作成する。Generatedではないので注意
Construnction ScriptでGet Dynamic Meshし、リセットしてからBoxを追加
旧バージョンと大体同じようにCylinderを追加。
On Rebuild Generated MeshからTargetMeshを変数にしていないので代わりにGet Dynamic MeshでTarget Meshを取得
真価が試されるのはここから。Standaloneで起動!先ほどは消えてしまったが…
キャー!動いたー!!!(黄色い声)
キャー!動いたー!!!(2回目)
結論
GeneratedDynamicMeshActorとOn Rebuild Generated Meshはトラップである
きっと誰かが穴掘ったりするゲームとか切削シミュレーターとか作ってくれるのを楽しみにしてます。