Puedes invocar la herramienta de geometría proxy desde secuencias de comandos de Blueprint y Python, lo cual puede ayudarte a automatizar la creación de recursos y el proceso de preparación de datos, combinando y simplificando actores de malla estática y sus materiales a partir de secuencias de comandos que ejecutas dentro de Unreal Editor y así mejorar significativamente el rendimiento del renderizado a costa de cierta precisión visual.
Por ejemplo, este conjunto de ruedas contiene 147 actores de malla estática independientes con un total de 900 000 triángulos, con un material distinto para cada malla. Esto supone cientos de llamadas de trazado a la GPU. Tras la ejecución de la herramienta de geometría proxy, los actores se fusionan en un único modelo con un solo material, que se puede renderizar con una llamada de trazado.


El número de triángulos también se ha reducido un 97 %, lo que ha provocado algunas deformaciones, pero puedes ajustar la configuración en tu secuencia de comandos para encontrar el equilibrio adecuado entre simplificación y calidad visual.
Como la herramienta de geometría proxy implica algunas transformaciones relativamente complejas en la geometría y ofrece muchos ajustes para controlar su funcionamiento, te recomendamos empezar a usar la herramienta a través de su IU en el editor. Únicamente pasarás a invocarla desde secuencias de comandos cuando entiendas bien el funcionamiento de la herramienta, sus ajustes y los efectos que esperas obtener. Para obtener más información, consulta el resto de guías de esta sección.
Prerrequisitos: si aún no lo has hecho, tendrás que instalar el complemento Editor Scripting Utilities. Para obtener más información, consulta Secuencias de comandos y automatización del editor.
La herramienta de geometría proxy se muestra a través del nodo Editor Level Library > Create Proxy Mesh Actor.
Tendrás que dar a este nodo las siguientes entradas:
- Una matriz que contenga todos los actores de malla estática que quieras fusionar. Ten en cuenta que deben ser actores de malla estática, no actores que contengan componentes de malla estática.
-
Un objeto Editor Scripting Create Proxy Mesh Actor Options que contiene los ajustes utilizados por la herramienta de geometría proxy. Este objeto expone la mayoría de los ajustes que se muestran en la IU de la herramienta de geometría proxy. Para obtener uno de estos objetos, arrastra hacia la izquierda desde la entrada Opciones de fusión y selecciona Crear EditorScriptingCreateProxyMeshActorOptions.
Haz clic en la imagen para verla a tamaño completo.
Utiliza este objeto para proporcionar la configuración de la herramienta de geometría proxy. Muchos de los ajustes detallados se encuentran en otro objeto, que se pasa a la entrada Configuración de la malla proxy. Para obtener uno de estos objetos, repite lo que hiciste anteriormente: arrastra hacia la izquierda desde la entrada Configuración de la malla proxy y selecciona Crear MeshProxySettings.
Haz clic en la imagen para verla a tamaño completo.
Por ejemplo, el siguiente fragmento toma todos los actores que están seleccionados actualmente en el visor de niveles y en el esquematizador del mundo, los fusiona en una malla proxy, guarda el resultado en un recurso con un nombre y una ubicación específicos y sustituye los actores de malla estática originales del nivel por una única instancia del recurso proxy recién generado.
Haz clic en la imagen para verla a tamaño completo.
La herramienta de geometría proxy se muestra a través de la función unreal.EditorLevelLibrary.create_proxy_mesh_actor(). Tendrás que pasar a esta función los siguientes parámetros:
- Una matriz que contenga todos los actores de malla estática que quieras fusionar. Ten en cuenta que deben ser actores de malla estática, no actores que contengan componentes de malla estática.
- Un objeto
unreal.EditorScriptingCreateProxyMeshActorOptionsque contiene los ajustes que usará la herramienta de geometría proxy. Este objeto expone la mayoría de los ajustes que se muestran en la IU de la herramienta de geometría proxy. Tendrás que crear uno de estos objetos y definir sus propiedades.
Por ejemplo, el siguiente fragmento toma todos los actores de malla estática del nivel, los fusiona en una malla proxy, guarda el resultado en un recurso denominado «Proxy» y cambia los actores de malla estática originales del nivel por una única instancia del recurso proxy.
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)