ブループリントと 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 プラグイン をインストールしてください。 詳細については 「エディタのスクリプティングと自動化」 を参照してください。

言語の選択

ブループリント

Python

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

Proxy Mesh アクタの作成

このノードには以下のように入力してください。

  • マージされるすべての Static Mesh アクタを含む配列。 これらは、Static Mesh コンポーネントを含むアクタではなく、Static Mesh アクタでなければならないことに留意してください。

  • Editor Scripting Create Proxy Mesh Actor Options オブジェクトには、プロキシ ジオメトリ ツールで使用される設定が含まれています。 このオブジェクトは、プロキシ ジオメトリ ツールの UI に表示される設定の大部分を公開しています。
    これらのオブジェクトの 1 つを取得するには、[Merge Options] 入力から左にドラッグし、[Make EditorScriptingCreateProxyMeshActorOptions] を選択します。
    Options オブジェクトの作成
    このオブジェクトを使用して、プロキシ ジオメトリ ツールの設定を行います。 詳細設定の多くは、[Mesh Proxy Settings] 入力に渡す別のオブジェクトにあります。 これらのオブジェクトのいずれかを取得するには、上記の手順を繰り返します。 [Mesh Proxy Settings] 入力から左にドラッグし、[Make MeshProxySettings] を選択します。
    Mesh Settings (メッシュ設定) オブジェクトの作成

たとえば、次のスニペットは、レベル ビューポートと 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

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信