DynamicMeshをStaticMeshに変換・保存してアセット化する方法
UE5.7のGeometry Scripting機能(DynamicMesh)を使ってブループリント上で作成した形状は、そのままではスタンドアローンゲームやパッケージ版で表示されなくなってしまいます。
これを回避するためには、作成した形状をコンテンツブラウザに「StaticMesh(スタティックメッシュ)」として書き出して保存(アセット化)する必要があります。その具体的なノードの組み方と、エディタ上からボタン一発で実行できる便利ツールの作り方を解説します。
💡 メッシュを変換・保存する核心ノード
Geometry Scriptには、DynamicMeshの形状をStaticMeshアセットとしてコンテンツブラウザに書き出すための専用ノードが用意されています。一番よく使うのが Create New Static Mesh Asset From Mesh というノードです。
■ ノードの設定手順
Target Mesh を用意する 変形や生成を終えた、完成形の
Dynamic Mesh(またはTarget Mesh変数)を用意します。Create New Static Mesh Asset From Mesh ノードを配置 このノードが、DynamicMeshのデータをもとに新しいStaticMeshアセットをハードディスク(コンテンツブラウザ)に書き出します。
ピンの設定(重要)
From Dynamic Mesh: 変換したいDynamicMeshを繋ぎます。
Asset Path Game Relative: 保存先のパスを文字列(String)で指定します。 (※例:
/Game/GeneratedMeshes/MyNewMeshと書くと、コンテンツフォルダ内の「GeneratedMeshes」フォルダに「MyNewMesh」という名前で保存されます)Options: ここでUVの割り当てや、Nanite(ナナイト)を有効にするかどうかの設定(Enable Nanite)ができます。
📋 エディタ用ボタンを作るブループリント実装パターン
エディタ上でボタン一発でStaticMesh化したい場合、「Actor」のブループリントに以下のように実装するのが一番簡単です。
1. イベントグラフにカスタムイベントを作る
イベントグラフ(Event Graph)を開き、右クリックから Custom Event を作成します。名前は ExportToStaticMesh などにしておきます。
2. 「エディタで呼べるボタン」にする
作成した Custom Event ノードを選択し、画面右側の Details(詳細)パネル を見ます。
「Call in Editor(エディタで呼び出し)」 というチェックボックスがあるので、そこにチェックを入れます。
これにより、レベル上にこのActorを配置した際、詳細パネルに「ExportToStaticMesh」というボタンが出現するようになります。
3. ノードを繋ぐ
以下のような流れでノードを繋ぎます。
[Custom Event (Call in Editor)]
↓
[Get Dynamic Mesh Component] ── (Target)
↓
[Get Dynamic Mesh] (ComponentからMeshデータを取得)
↓
[Create New Static Mesh Asset From Mesh]
├─ From Dynamic Mesh (上のMeshデータを繋ぐ)
└─ Asset Path Game Relative: "/Game/Procedural/MyMesh_01"
4. エディタ上で実行する
このActorをレベルに配置します。
配置したActorを選択し、画面右側の「詳細(Details)」パネルを見ます。
先ほど作ったイベント名のボタンが表示されているので、それをクリックします。
コンテンツブラウザの指定したパスに、新しく StaticMeshアセット が自動生成されます!
⚠️ 注意点:既存のアセットを上書きしたい場合
もし、何度も形状を微調整して「同じアセット名で上書き保存」したい場合は、Create New~ ではなく Recompute Static Mesh Asset From Mesh というノードを使用します。
(Create New~ のまま同じ名前で実行すると、別名で新規作成されてしまうか、上書きされずエラーになることがあります)
