ジオメトリ スクリプト処理により、カスタム仕様のモデリング ツールとワークフローを作成するためのブループリントおよび Python の関数を利用できます。このガイドでは、ブループリントによるジオメトリ スクリプト処理の活用の基礎について説明します。以下のステップでは、レベル デザイン用のプロシージャル メッシュ ツールの生成を行います。これは、Lyra サンプル プロジェクト 用に作成したジオメトリ ツールと類似したものです。
このガイドでは、以下の方法について説明します。
- 迅速にレベルのブロッキングを行うためにプロシージャル ジオメトリを生成する。
- 動的にメッシュをカットするためにブール演算を利用する。
- スタティックメッシュ ベイク関数を作成する。
開発するツールは、プロシージャル メッシュ生成の小さな例と、ジオメトリ スクリプト処理で作成できるツールです。その応用例が プロシージャル コンテンツ生成フレームワーク であり、これはジオメトリ スクリプト処理をベースにしています。このツールセットの詳細については、「プロシージャル コンテンツ生成の概要」を参照してください。
プロシージャルな生成に加えて作成できる他のワークフローには、以下のものがあります。
前提条件となる知識
このページの内容を理解および利用するには、次のことを前提としています。
- ブループリント の基礎知識がある。
- 入門トピックである ジオメトリ スクリプト処理 についてよく理解している (特に、新しく導入されたオブジェクト タイプ)。
このガイドでは、Third Person (サード パーソン) テンプレート を利用します。ただし、任意のプロジェクトで継続することもできます。
プラグインを有効にする
ジオメトリ スクリプト処理をするためには、関連づいているプラグインを有効にする必要があります。
プラグインを有効にする、または有効になっていることを確認するには、次の手順を実行します。
-
メニュー バー で、[Edit (編集)] > [Plugins (プラグイン)] を選択します。
-
検索バーに、「geometry script」と入力します。
- Geometry Script プラグインを有効にし、ダイアログのポップアップで、[Yes (はい)] を選択します。
- エンジンを再起動します。
ブループリント クラスを作成する
開始する前に、正しいブループリント クラスがあることを確認する必要があります。レベル デザイン用のプロシージャル メッシュの作成が目標であるため、GeneratedDynamicMeshActor クラスを使用する必要があります。
ブループリント クラスを選択するには、次の手順を実行します。
- コンテンツ ブラウザ で右クリックし、[Blueprint Class (ブループリント クラス)] を選択します。
-
[GeneratedDynamicMeshActor] を見つけて選択します。
- ブループリントに「BP_ProceduralGen」という名前を付けます。
GeneratedDynamicMeshActor がオプションとして表示されない場合は、Geometry Scripting プラグインが有効になっていません。
イベントの設定
クラスの作成後に、特定のイベントを設定し、ツール作成に利用するダイナミック メッシュにデータを入力する必要があります。
イベントを作成するには、次の手順を実行します。
- コンテンツ ブラウザで、ブループリント クラスをダブルクリックします。
- イベント グラフ を開きます。
-
グラフ内で右クリックし、「generated mesh」と入力して利用可能なノードから絞り込み、Event on Rebuild Generated Mesh を選択します。このイベントは、ダイナミック メッシュのパラメータを更新するたびにトリガーされ、メッシュが再構築されます。
-
Target Mesh 出力のピンを右クリックし、[Promote to Variable (変数へ昇格)] を選択してローカル変数に昇格します。
- 変数に「DynamicMesh」という名前を付け、その型を Dynamic Mesh にし、プライベートのままにします。この変数が、編集したダイナミック メッシュを表します。
建築物のジオメトリ
ブループリント クラスとイベントを作成したら、ジオメトリ スクリプト処理関数の追加を開始できます。このガイドの目標は、トランスフォームしたり切り取ったりできる大まかな形状を生成することです。そのためには、まず編集するメッシュを作成する必要があります。
メッシュを作成するには、次の手順を実行します。
- DynamicMesh 変数から実行ピンをドラッグし、Append Box ノードを検索して選択します。これにより、ボックスのプリミティブがダイナミック メッシュに追加されます。
-
DynamicMesh 変数の出力ピンを Target Mesh 入力ピンに接続します。
これら最初のいくつかのノードを使用することで、プロシージャル メッシュを作成しました。これをコンパイルし、ブループリントをレベルにドラッグすることで、テストできます。すぐに作成できるその他の形状については、『ジオメトリ スクリプトのリファレンス』ドキュメントの「プリミティブ生成」セクションを参照してください。
トランスフォーム ウィジェットを追加する
メッシュのトランスフォームを動的に調整するため、インタラクティブなコントロールを追加できます。
インタラクティブなコントロールを追加するには、次の手順を実行します。
-
「BoxSize」という新しいパブリック変数を作成し、その型を [Vector (ベクター)] に設定します。
-
この変数の [Details] パネルで、[Instance Editable (インスタンス編集可能)] および [Show 3D widget (3D ウィジェットを表示)] をオンにします。デフォルト値 をそれぞれ「200」、「200」、「200」に設定します。3D ウィジェットを有効にすると X、Y、および Z のトランスフォームをインタラクティブにコントロールするためのマニピュレータが作成されます。
- 変数からドラッグし、[Get BoxSize (BoxSize を取得)] を選択します。
- 変数を右クリックし、[Split Struct Pin (構造体ピンを分割)] を選択します。変数の X、Y、および Z の値により、ボックスの寸法が決定されます。
-
対応する X、Y、および Z の値を、Append Box のそれぞれの寸法値に接続します。
- コンパイル (Ctrl + Alt) して 保存 (Ctrl + S) します。
これでキューブ メッシュが生成され、動的に寸法を調整できるようになりました。ウィジェットに調整を行うと、メッシュのスケーリングに対する設定サイズで新しいメッシュが毎回生成されます。

ウィジェットを表示するには、選択モード になっている必要があります。
ブール値を使用して編集する
ブール演算は、メッシュのペアを減算または加算します。これらは、メッシュに迅速にディテールやディスプレイスメント エフェクトを加えるのに役立ちます。ブール関数に 2 番目のメッシュを作成するには、メッシュのプールから一時的なメッシュを割り当てることができます。一時的なメッシュは、エディタ内で不要なジオメトリの作成を避けることができ、計算処理による負荷が軽減されます。
ブール演算を作成するには、次の手順を実行します。
- グラフを右クリックし、Get Compute Mesh Pool を選択します。これにより、一時的なメッシュが割り当てられ、ブール演算が実行されます。
- Append Box の実行ピンを Get Compute Mesh Pool に接続します。
-
Return Value ピンをドラッグし、Request Mesh を検索して選択します。実行ピンを接続します。
- Return Value ピンをドラッグし、Append Cylinder を検索して選択します。このノードは、ボックス メッシュから減算するために使用するシリンダー メッシュを追加します。
-
出力 Target Mesh を BoolMesh という変数に昇格します。その型を Dynamic Mesh にし、プライベートのままにします。
- BoolMesh の実行ピンをドラッグし、[Apply Mesh Boolean] を検索して選択します。このノードを使用し、ブール演算をメッシュに適用します。
- DynamicMesh 編集からドラッグし、Apply Mesh Boolean の Target Mesh 入力に接続します。
-
BoolMesh を、Apply Mesh Boolean の Tool Mesh に接続します。Tool Mesh は、ブール演算を行うメッシュを表します。このパラメータこそが、Append Cylinder ノードを追加した理由となるものです。
- Apply Mesh Boolean ノードの Operation のタイプを Subtract に設定します。
- 必要な操作を適用した後、一時的なメッシュをプールに返し、そのメモリを再利用できるようにする必要があります。Apply Mesh Boolean の実行ピンを Release All Compute Meshes に接続します。イベントがトリガーされると、プールが割り当てたすべての計算メッシュが解放されます。
- コンパイル (Ctrl + Alt) して 保存 (Ctrl + S) します。
レベル エディタでブループリントをコンパイルして表示すると、ブールの効果が小さすぎて確認できない場合があります。ブールの効果を確認するには、ブール メッシュのサイズを手動で設定するか、ウィジェットを使用して動的に調整します。
ウィジェットを追加する
ボックスのプリミティブにウィジェットを作成したのと同様に、ブールのメッシュおよび場所に同じ処理を行うことができます。
ウィジェットを作成するには、次の手順を実行します。
-
[Variables (変数)] パネルの下で、ブールのメッシュの場所にパブリック変数を作成し、「BoolLocation」という名前を付け、その型を [Vector] に設定します。
-
[Details] パネルで [Instance Editable] と [Show 3D widget] を有効にします。
-
Append Cylinder ノードの Transform ピンを右クリックし、[Split Struct Pin] を選択してから BoolLocation 変数を Transform Location に接続します。
- 別のパブリック変数を作成し、「BoolSize」という名前を付け、その型を [Vector] に設定します。これを使用すると、ブールのメッシュのサイズを調整できます。
- [Details] パネルで [Instance Editable] と [Show 3D widget] を有効にし、デフォルト値 をそれぞれ「1」、「1」、「5」に設定します。
- 変数をグラフにドラッグし、[Get Bool Size (ブール サイズを取得)] を選択します。
- ピンを右クリックし、[Split Struct Pin] を選択します。
-
Bool Size ピンを、Append Cylinder ノードの対応する Transform Scale ピンに接続します。
- コンパイル (Ctrl + Alt) して 保存 (Ctrl + S) します。
これで、動的にさまざまな形状にトランスフォームできるメッシュができました。

スタティックメッシュ関数にベイクする
動的に生成されたメッシュができたため、今度はこれを既存のスタティックメッシュに適用して、すばやくレベルのデザインを行うことができます。これを行うには、関数を作成し、それをレベル エディタの [Details] パネルに公開します。
スタティックメッシュの更新タイミングをコントロールするには、次の手順を実行します。
-
「Bake Static Mesh」という名前の新しい関数を作成します。
-
この関数の [Details] パネルで、[Call in Editor (エディタで呼び出す)] を有効にし、レベル エディタのイベントを有効にします。
- 関数の実行ピンをドラッグし、Get Dynamic Mesh を検索して選択します。関数により、現在使用中のダイナミック メッシュが取得されます。
-
Get Dynamic Mesh 実行ピンからドラッグし、Copy Mesh to Static Mesh を検索して選択します。また、Return Value を From Dynamic Mesh に接続します。関数の実行時に、選択されたスタティックメッシュにダイナミック メッシュがベイクされます。
- ベイクするスタティックメッシュを選択するには、エディタにパラメータを公開する必要があります。パブリック変数を作成し、「TargetMesh」という名前を付け、その型を [Static Mesh (スタティックメッシュ)] にします。
- 変数をグラフにドラッグし、[Get TargetMesh (TargetMesh を取得)] を選択します。
- 変数のピンを右クリックし、[Convert to Validated Get (検証済み Get に変換)] を選択します。この変換により、メッシュの選択時に関数がコードを実行するのみになるよう設定されます。
-
Target Mesh ピンを To Static Mesh Asset に接続します。
最終的なベイク スクリプト。
- コンパイル して 保存 します。
-
これで、[Bake to Static Mesh] ボタンがレベル エディタの [Details] パネルに表示されるようになります。このボタンを使用する前に、Target Mesh をベイクするスタティックメッシュに更新します。
終了結果を確認する
Bake Static Mesh 関数とプロシージャル メッシュ スクリプトを使用することで、レベル内でダイナミック メッシュを使用して継続的にスタティックメッシュを更新できるようになります。
最終的なプロシージャル メッシュ スクリプト。クリックして拡大表示
応用編
ここで学習したことを活かして、以下の調整を試してみてください。
- ボックスのメッシュを球体にする。
- モデリングをさらにコントロールするため、2 つ目のブール メッシュを追加する。
- Create New Static Mesh Asset From Mesh を使用し、ダイナミック メッシュを既存のスタティックメッシュではなく、新規スタティックメッシュにベイクする。