Você pode chamar a ferramenta Proxy Geometry por scripts de Blueprint e Python. Isso pode ajudar a automatizar a criação de ativos e o fluxo de preparação de dados, combinando e simplificando atores de malha estática e seus materiais a partir de scripts que você executa dentro do Unreal Editor. Isso pode melhorar significativamente o desempenho de renderização, mas com perda de precisão visual.
Por exemplo, este conjunto de roda contém 147 atores de malha estática separados com um total de 900.000 triângulos, com um material separado para cada malha. Isso resulta em centenas de draw calls pesadas na GPU. Depois de executar a ferramenta Proxy Geometry, os atores são combinados em um único modelo com um único material, que pode ser renderizado com uma draw call.


A contagem de triângulos também foi reduzida em 97%. Isso causou alguma deformação, mas você pode ajustar as configurações no código para encontrar o equilíbrio certo entre simplificação e qualidade visual.
Como a ferramenta Proxy Geometry envolve algumas transformações relativamente complexas na geometria e oferece muitas configurações para controlar sua operação, recomendamos começar com a ferramenta usando-a por meio de sua interface de usuário no editor. Passe a chamá-la a partir de scripts apenas quando tiver certeza de que entendeu a ferramenta, suas configurações e tiver uma boa ideia dos efeitos esperados. Confira o restante dos guias nesta seção para obter mais informações.
Pré-requisito: Caso ainda não tenha instalado, você precisará instalar o plugin Editor Scripting Utilities. Para obter detalhes, consulte Como criar scripts e automatizar o editor.
A ferramenta Proxy Geometry é exposta por meio do nó Editor Level Library, Create Proxy Mesh Actor.
Você precisará atribuir as seguintes entradas a esse nó:
- Uma matriz que contém todos os atores de malha estática que deseja mesclar. Eles devem ser atores de malha estática e não atores que contêm componentes de malha estática.
-
Um objeto Editor Scripting Create Proxy Mesh Actor Options que contém as configurações usadas pela ferramenta Proxy Geometry. Este objeto expõe a maioria das configurações que são mostradas na interface de usuário da ferramenta Proxy Geometry. Para obter um desses objetos, arraste para a esquerda da entrada Merge Options e escolha Make EditorScriptingCreateProxyMeshActorOptions.
Clique na imagem para ampliá-la.
Use este objeto para fornecer as configurações da ferramenta Proxy Geometry. Muitas das configurações detalhadas são fornecidas em outro objeto, que você passa para a entrada Mesh Proxy Settings. Para obter um desses objetos, repita o que fez acima: arraste para a esquerda da entrada Mesh Proxy Settings e escolha Make MeshProxySettings.
Clique na imagem para ampliá-la.
Por exemplo, o trecho de código a seguir combina todos os atores que estão selecionados na janela de visualização do nível e no Organizador de Mundo em uma malha equivalente, salva o resultado em um ativo com o nome e a posição específicos e substitui os atores originais da malha estática no nível por uma única instância do ativo equivalente recém-gerado.
Clique na imagem para ampliá-la.
A ferramenta Proxy Geometry é exposta por meio da função unreal.EditorLevelLibrary.create_proxy_mesh_actor(). Você precisará passar os seguintes parâmetros a essa função:
- Uma matriz que contém todos os atores de malha estática que deseja mesclar. Eles devem ser atores de malha estática e não atores que contêm componentes de malha estática.
- Um objeto
unreal.EditorScriptingCreateProxyMeshActorOptionsque contém as configurações a serem usadas pela ferramenta Proxy Geometry. Este objeto expõe a maioria das configurações que são mostradas na interface de usuário da ferramenta Proxy Geometry. Você precisa criar um desses objetos e configurar suas propriedades.
Por exemplo, o trecho de código a seguir pega todos os atores de malha estática no nível, combina-os em uma malha equivalente, salva o resultado em um ativo chamado "Proxy" e troca os atores de malha estática originais no nível por uma única instância do "ProxyAsset".
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)