ブループリントと Python でプロキシ ジオメトリ ツールを使用する

Unreal Editor で実行するブループリントまたは Python スクリプトからプロキシ ジオメトリ ツールを呼び出すことで、アセットの準備のためのワークフローを自動化します。

Windows
MacOS
Linux

ブループリントおよび Python スクリプトから プロキシ ジオメトリ ツールを呼び出すことができます。これにより、Unreal Editor 内で実行するスクリプトから Static Mesh アクタとそのマテリアルを組み合わせて単純化し、アセットの作成とデータ準備のパイプラインを自動化できます。これにより、レンダリング パフォーマンスは大幅に向上しますが、視覚的な精度が犠牲になります。

たとえば、このホイール アセンブリには、合計 900,000 個の三角ポリゴンを持つ 147 個の Static Mesh アクタが含まれており、各メッシュが個別にマテリアルを持っています。これにより、数百もの大量のドローコールが GPU に追加されます。プロキシ ジオメトリ ツールを実行した後、アクタは単一のマテリアルを持つ単一のモデルにマージされます。これは 1 つのドローコールでレンダリングできます。

変換前 147 個のスタティック メッシュ

変換後 1 個のスタティック メッシュ

三角ポリゴンの数も 97% 削減しました。これにより多少の歪みが生じますが、スクリプトの設定で単純化とビジュアル品質の適切なバランスを調整することができます。

プロキシ ジオメトリ ツールには、ジオメトリに対する比較的複雑な変換がいくつか含まれており、その操作を制御するためのさまざまな設定が用意されているので、エディタの UI からツールを使用することをお勧めします。ツールやその設定、そして予想される効果を十分に理解していると確信が持てる場合にのみ、スクリプトからの呼び出しをお試しください。詳細は、このセクションの他のガイドを参照してください。

前提条件: 今回の使用が初めての場合は、Editor Scripting Utilities プラグインをインストールしてください。詳細は、「エディタをスクリプト化および自動化する」 を参照してください。

実装方法を選んでください。

Blueprints

Python

プロキシ ジオメトリ ツールは、[Editor Level Library]>[Create Proxy Mesh Actor] ノードを介して公開されます。

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)
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback