ブループリントおよび Python スクリプトから プロキシ ジオメトリ ツールを呼び出すことができます。これにより、Unreal Editor 内で実行するスクリプトから Static Mesh アクタとそのマテリアルを組み合わせて単純化し、アセットの作成とデータ準備のパイプラインを自動化できます。これにより、レンダリング パフォーマンスは大幅に向上しますが、視覚的な精度が犠牲になります。
たとえば、このホイール アセンブリには、合計 900,000 個の三角ポリゴンを持つ 147 個の Static Mesh アクタが含まれており、各メッシュが個別にマテリアルを持っています。これにより、数百もの大量のドローコールが GPU に追加されます。プロキシ ジオメトリ ツールを実行した後、アクタは単一のマテリアルを持つ単一のモデルにマージされます。これは 1 つのドローコールでレンダリングできます。


三角ポリゴンの数も 97% 削減しました。これにより多少の歪みが生じますが、スクリプトの設定で単純化とビジュアル品質の適切なバランスを調整することができます。
プロキシ ジオメトリ ツールには、ジオメトリに対する比較的複雑な変換がいくつか含まれており、その操作を制御するためのさまざまな設定が用意されているので、エディタの UI からツールを使用することをお勧めします。ツールやその設定、そして予想される効果を十分に理解していると確信が持てる場合にのみ、スクリプトからの呼び出しをお試しください。詳細は、このセクションの他のガイドを参照してください。
前提条件: 今回の使用が初めての場合は、Editor Scripting Utilities プラグインをインストールしてください。詳細は、「エディタをスクリプト化および自動化する」を参照してください。
プロキシ ジオメトリ ツールは、[Editor Level Library]>[Create Proxy Mesh Actor] ノードを介して公開されます。

このノードには以下のように入力してください。
- マージされるすべての Static Mesh アクタを含む配列。これらは、Static Mesh コンポーネントを含むアクタではなく、Static Mesh アクタでなければならないことに留意してください。
-
Editor Scripting Create Proxy Mesh Actor Options オブジェクトには、プロキシ ジオメトリ ツールで使用される設定が含まれています。このオブジェクトは、プロキシ ジオメトリ ツールの UI に表示される設定の大部分を公開しています。 これらのオブジェクトの 1 つを取得するには、Merge Options 入力から左にドラッグし、[Make EditorScriptingCreateProxyMeshActorOptions] を選択します。
クリックしてフルサイズで表示。
このオブジェクトを使用して、プロキシ ジオメトリ ツールの設定を行います。詳細設定の多くは、Mesh Proxy Settings 入力に渡す別のオブジェクトにあります。さきほど行った手順を繰り返して、これらを取得します。すなわち、Mesh Proxy Settings 入力から左にドラッグし、[Make MeshProxySettings] を選択します。
クリックしてフルサイズで表示。
たとえば、次のスニペットは、レベル ビューポートと World Outliner (ワールド アウトライナー) で現在選択されているすべてのアクタを取得してプロキシ メッシュにマージし、その結果を指定された名前と場所にアセットとして保存します。そして、新しく生成されたプロキシ アセットのインスタンスがあるレベルで元の Static Mesh アクタを置き換えます。
クリックしてフルサイズで表示
プロキシ ジオメトリ ツールは、unreal.EditorLevelLibrary.create_proxy_mesh_actor()
関数を介して公開されます。この関数には、次のパラメータを渡す必要があります。
- マージされるすべての Static Mesh アクタを含む配列。これらは、Static Mesh コンポーネントを含むアクタではなく、Static Mesh アクタでなければならないことに留意してください。
unreal.EditorScriptingCreateProxyMeshActorOptions
オブジェクトには、プロキシ ジオメトリ ツールで使用される設定が含まれています。このオブジェクトは、プロキシ ジオメトリ ツールの UI に表示される設定の大部分を公開しています。これらのオブジェクトの 1 つを作成し、プロパティを設定する必要があります。
たとえば、以下のスニペットは、レベル内のすべての Static Mesh アクタを取得してプロキシ メッシュにマージし、その結果をプロキシという名前でアセットとして保存します。そして、プロキシ アセットのインスタンスがあるレベルで元の Static Mesh アクタを置き換えます。
import unreal
actors = unreal.EditorLevelLibrary.get_selected_level_actors()
merge_options = unreal.EditorScriptingCreateProxyMeshActorOptions()
merge_options.base_package_name = "/Game/Proxy"
merge_options.destroy_source_actors = False
merge_options.new_actor_label = "Proxy"
merge_options.spawn_merged_actor = True
merge_options.mesh_proxy_settings.set_editor_property("allow_adjacency", False)
merge_options.mesh_proxy_settings.set_editor_property("allow_distance_field", False)
merge_options.mesh_proxy_settings.set_editor_property("allow_vertex_colors", False)
merge_options.mesh_proxy_settings.set_editor_property("calculate_correct_lod_model", True)
merge_options.mesh_proxy_settings.set_editor_property("compute_light_map_resolution", True)
merge_options.mesh_proxy_settings.set_editor_property("create_collision", False)
merge_options.mesh_proxy_settings.set_editor_property("generate_lightmap_u_vs", True)
merge_options.mesh_proxy_settings.set_editor_property("merge_distance", 1.0)
merge_options.mesh_proxy_settings.set_editor_property("voxel_size", 0.1)
merged_actor = unreal.EditorLevelLibrary.create_proxy_mesh_actor(actors, merge_options)