Vous pouvez appeler l’outil Proxy Geometry à partir de scripts Blueprint et Python. Cela peut vous aider à automatiser votre pipeline de création d'e ressources et de préparation de données, en combinant et en simplifiant les acteurs de maillage statique et leurs matériaux à partir de scripts que vous exécutez dans l'Unreal Editor. Cela peut améliorer considérablement les performances de rendu au détriment d’un peu de précision visuelle.
Par exemple, cet ensemble de roues contient 147 acteurs de maillage statique distincts avec un total de 900 000 triangles, avec un matériau distinct pour chaque maillage. Cela représente des centaines d'appels à générer pour le processeur graphique. Après avoir exécuté l'outil Proxy Geometry, les acteurs sont fusionnés en un seul modèle avec un seul matériau, qui peut être rendu en un seul appel à générer.


Le compte de triangles est également réduit de 97%. Cela a provoqué quelques déformations, mais vous pouvez ajuster les paramètres de votre script pour trouver le bon équilibre entre simplification et qualité visuelle.
L'outil Proxy Geometry impliquant des transformations relativement complexes de votre géométrie et offrant de nombreux paramètres pour contrôler son fonctionnement, nous vous recommandons de commencer en utilisant l'outil via l'IU de l'éditeur. Passez à son appel à partir de scripts uniquement lorsque vous êtes sûr de comprendre l'outil et ses paramètres, et lorsque vous avez une bonne idée des effets que vous attendez. Consultez le reste des guides de cette section pour en savoir plus.
Condition requise : si vous ne l’avez pas déjà fait, vous devez installer le plug-in Editor Scripting Utilities. Pour en savoir plus, consultez Rédaction de scripts et automatisation de l'éditeur.
L'outil Proxy Geometry est exposé via le nœud Editor Level Library > Create Proxy Mesh Actor.

Vous devrez fournir à ce nœud les entrées suivantes :
- Une matrice contenant tous les acteurs de maillage statique que vous souhaitez fusionner. Notez qu'il doit s'agir d'acteurs de maillage statique, et non d'acteurs contenant des composants de maillage statique.
-
Un objet Editor Scripting Create Proxy Mesh Actor Options qui contient les paramètres utilisés par l'outil Proxy Geometry. Cet objet expose la plupart des paramètres affichés dans l'IU de l'outil Proxy Geometry. Pour obtenir l’un de ces objets, faites glisser vers la gauche depuis l’entrée Options de fusion et choisissez Make EditorScriptingCreateProxyMeshActorOptions.
Cliquez sur l'image pour l'afficher à taille réelle.
Utilisez cet objet pour fournir les paramètres à l’outil Proxy Geometry. De nombreux paramètres détaillés sont fournis dans un autre objet, que vous transmettez à l'entrée Mesh Proxy Settings. Pour obtenir l'un de ces objets, répétez ce que vous avez fait ci-dessus : faites glisser vers la gauche depuis l'entrée Mesh Proxy Settings et choisissez Make MeshProxySettings.
Cliquez sur l'image pour l'afficher à taille réelle.
Par exemple, l'extrait suivant prend tous les acteurs actuellement sélectionnés dans la fenêtre d'affichage de niveau et dans le hublot de niveau, les fusionne dans un maillage proxy, enregistre le résultat dans une ressource avec un nom et un emplacement spécifiés et remplace les acteurs de maillage statique d'origine dans le niveau par une seule instance de la nouvelle ressource proxy.
Cliquez sur l'image pour l'afficher à taille réelle.
L'outil Proxy Geometry est exposé via la fonction unreal.EditorLevelLibrary.create_proxy_mesh_actor()
. Vous devrez transmettre à cette fonction les paramètres suivants :
- Une matrice contenant tous les acteurs de maillage statique que vous souhaitez fusionner. Notez qu'il doit s'agir d'acteurs de maillage statique, et non d'acteurs contenant des composants de maillage statique.
- Un objet
unreal.EditorScriptingCreateProxyMeshActorOptions
qui contient les paramètres à utiliser par l'outil Proxy Geometry. Cet objet expose la plupart des paramètres affichés dans l'IU de l'outil Proxy Geometry. Vous devrez créer l’un de ces objets et configurer ses propriétés.
Par exemple, l'extrait suivant prend tous les acteurs de maillage statique du niveau, les fusionne dans un maillage proxy, enregistre le résultat dans une ressource appelée Proxy et échange les acteurs de maillage statique d'origine du niveau contre une seule instance de la ressource 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)