L'importateur Datasmith peut automatiquement importer des métadonnées sur les objets qu'il gère : des informations que vous configurez pour ces objets dans votre application de conception 3D ou de CAO. Les métadonnées sont le plus souvent utilisées pour stocker des informations réelles sur la pièce mécanique ou l'élément architectural que représente la ressource, comme le coût de la pièce, le matériau dont elle est faite, ses propriétés physiques telles que son poids ou son efficacité d'isolation, ou des informations d'utilisation comme le couple maximal à appliquer à une pièce. Vous pouvez également utiliser des métadonnées pour stocker tout autre type d'informations sur une ressource dont vous pourriez avoir besoin pour votre projet.
Avoir ces métadonnées à disposition dans l'Unreal Editor et l'Unreal Engine peut vous aider de deux manières :
- Dans votre pipeline de ressources : vous pouvez utiliser des métadonnées lorsque vous importez des ressources et configurez vos niveaux pour vous aider à distinguer différents types de ressources et d'acteurs qui nécessitent un traitement différent. Par exemple :
- Vous pouvez utiliser des métadonnées pendant le processus d'importation Datasmith pour identifier certains types de ressources dont vous n'aurez pas besoin dans votre scène finale, afin de pouvoir éviter de les importer.
- Après l'importation, vous pouvez l'utiliser pour identifier les acteurs de votre niveau que vous souhaitez fusionner, joindre ou remplacer, ou dont vous souhaitez remplacer les matériaux.
- À l'exécution dans votre jeu : vous pouvez utiliser des métadonnées à l'exécution pour afficher aux utilisateurs des informations sélectionnées sur vos acteurs provenant de votre outil de conception source. Par exemple :
- Si les objets de votre niveau disposent de données BIM contenant des informations sur leurs propriétés structurelles, vous souhaiterez peut-être visualiser ces informations dans votre expérience interactive lorsque le joueur sélectionne ces objets dans la scène.
- Ou, si votre projet est un configurateur de produit qui permet au joueur de choisir entre différentes options de conception, vous souhaiterez peut-être que votre logique de jeu calcule et affiche un total cumulé du coût des choix actuels du joueur en fonction des métadonnées de coût attribuées aux ressources visibles.
Cette page décrit comment importer des métadonnées dans l'Unreal via le processus d'importation Datasmith et comment y accéder dans vos scripts, à la fois dans l'éditeur et à l'exécution.
Sources de métadonnées
Datasmith importe actuellement les métadonnées des outils de conception suivants :
- Autodesk 3ds Max
- Autodesk Revit
- Dassault Systèmes Solidworks
- Trimble SketchUp Pro
- Maxon Cinema 4D
- Fichiers IFC 2x3
- Graphisoft Archicad
- Autodesk Navisworks
- McNeel Rhinoceros (Rhino)
Datasmith ne gère actuellement que les métadonnées sur la géométrie, pas sur d'autres types d'objets de scène, comme les lumières ou les caméras.
Afficher les métadonnées dans l'Unreal Editor
Une fois le processus d'importation Datasmith terminé, vous pouvez afficher les métadonnées de tout acteur de maillage statique de votre niveau dans son panneau Détails, sous la section Données utilisateur de la ressource :

Les métadonnées Datasmith sont actuellement en lecture seule dans l'éditeur.
Accéder aux métadonnées dans Blueprint et Python
Il existe diverses manières d'accéder aux métadonnées associées à vos objets de scène. Celle à utiliser dépend de si vous devez accéder aux métadonnées pendant le processus d'importation Datasmith ou une fois l'importation terminée.
Toutes les clés et valeurs de métadonnées sont stockées sous forme de chaînes dans l'Unreal Engine, quel que soit leur type d'origine dans votre application de conception ou de CAO. Par exemple, si vous définissez une valeur de métadonnées dans 3ds Max comme valeur booléenne de type true
ou comme un nombre de type 312
, elles seront des chaînes lorsque vous les relirez dans un script dans l'Unreal. Si vous avez besoin que les valeurs soient des booléens ou des nombres, utilisez un nœud de conversion Blueprint comme Utilities > String > String to Int ou String to Float, ou des fonctions d'analyse de chaîne Python intégrées comme int()
ou float()
.
Accéder aux métadonnées pendant l'importation
Si vous devez accéder à vos métadonnées pendant le processus d'importation Datasmith (par exemple, pour identifier certains maillages que vous souhaitez éliminer avant de générer des ressources Unreal pour votre scène), vous pouvez lire les métadonnées depuis la scène Datasmith. Pour obtenir des informations générales sur la manière d'exécuter un script pendant le processus de saisie, consultez Personnalisation du processus d'importation de Datasmith.
Vous trouverez les métadonnées jointes aux éléments d'acteur de maillage dans la scène Datasmith.
Les nœuds dont vous aurez besoin se trouvent sous Datasmith > Scene et Datasmith > Element.
Pour atteindre ces nœuds, vous devez décocher la case Sensible au contexte dans le menu contextuel ou rechercher les nœuds dont vous avez besoin dans la palette.
Nœud | Description |
---|---|
Get All Metadata | Récupère une matrice de tous les objets de métadonnées enregistrés pour tous les objets de la scène Datasmith. |
Get All Objects and Values for Key | Récupère une liste de tous les objets de la scène Datasmith qui ont une clé spécifiée. Vous obtiendrez également une liste de toutes les valeurs enregistrées pour cette clé sur tous ces objets. |
Get Metadata for Object | Récupère toutes les métadonnées attribuées à un objet spécifié. |
Get Metadata Value for Key | Récupère la valeur d'une clé spécifiée affectée à un objet spécifié. |
Get Metadata Keys and Values for Value | Récupère toutes les clés d'un objet spécifié dont la valeur correspond à l'entrée String to Match (Chaîne à faire correspondre). |
Pour les nœuds ci-dessus qui renvoient un objet d'élément de métadonnées Datasmith, vous pouvez obtenir les clés et les valeurs de l'objet de métadonnées en passant par Datasmith > Element > Get Properties, Get Property et Get Property Count :

Exemple d'utilisation
Cet exemple montre comment vous pouvez utiliser les valeurs attribuées à une clé de métadonnées pour identifier la géométrie dont vous savez que vous n'aurez pas besoin dans votre projet et pour la supprimer de votre scène Datasmith avant de créer des ressources de maillage statique :
Pendant le processus d'importation Datasmith, vous pouvez accéder aux métadonnées des objets de votre scène via l'objet unreal.DatasmithSceneElement
. Pour plus de détails sur les fonctions suivantes, consultez les références de l'API Python.
|
|
|
|
|
Exemple d'utilisation
Cet exemple montre comment vous pouvez utiliser les valeurs attribuées à une clé de métadonnées pour identifier la géométrie dont vous savez que vous n'aurez pas besoin dans votre projet et pour la supprimer de votre scène Datasmith avant de créer des ressources de maillage statique :
key_name = "name"
remove_keyword = "Clutch"
meshes_to_skip = set([])
# Récupérer tous les éléments de scène qui ont la clé "nom".
objects_and_values = ds_scene_in_memory.get_all_objects_and_values_for_key(key_name, unreal.DatasmithMeshActorElement)
objects = objects_and_values[0]
values = objects_and_values[1]
# Itérez sur eux à la recherche de ceux dont la valeur correspond à un mot-clé
for index, value in enumerate(values):
if remove_keyword in value:
print("removing actor named: " + value)
# Supprimer l'élément d'acteur de maillage de la scène et placer l'élément de maillage dans une liste pour le supprimer ultérieurement
mesh_actor = objects[index]
mesh = mesh_actor.get_mesh_element()
meshes_to_skip.add(mesh)
ds_scene_in_memory.remove_mesh_actor(mesh_actor)
# Supprimer tous les maillages que nous n'avons pas besoin d'importer.
for mesh in meshes_to_skip:
mesh_name = mesh.get_element_name()
print("suppression du maillage nommé " + mesh_name)
ds_scene_in_memory.remove_mesh(mesh)
Accéder aux métadonnées après l'importation
Lorsque le processus d'importation finalise votre scène Datasmith en ressources et acteurs Unreal, il applique également les métadonnées de chaque élément de maillage de la scène Datasmith à tous les acteurs du niveau qui représentent des instances de cette ressource de maillage statique. Vous pouvez ensuite utiliser Blueprint ou Python pour récupérer les métadonnées de tout ou partie des acteurs de maillage statique de votre niveau.
Les nœuds suivants accèdent aux métadonnées d'un acteur spécifique. Ceux-ci ont très peu d'impact sur les performances, vous pouvez donc les utiliser à tout moment, même lors de l'exécution dans votre projet. Si vous souhaitez visualiser les métadonnées importées pour un ou plusieurs objets sélectionnés dans votre scène (par exemple, dans une légende ou un menu dans l'interface utilisateur d'exécution de votre projet), ce sont les nœuds que vous souhaiterez utiliser dans vos graphiques Blueprint d'exécution.
Vous les trouverez dans la catégorie Données utilisateur Datasmith.
Nœud | Description |
---|---|
Get Datasmith User Data Value for Key | Récupère la valeur des métadonnées avec la clé spécifiée attribuée à l'objet spécifié. |
Get Datasmith User Data Keys and Values for Value | Récupère toutes les clés de l'objet spécifié qui ont la valeur que vous spécifiez dans l'entrée String to Match (Chaîne à faire correspondre). Utilisez ce nœud si vous connaissez la valeur que vous recherchez, mais pas le nom de la clé. |
Get Datasmith User Data | Récupère un objet de métadonnées qui contient toutes les paires clé-valeur enregistrées pour l'acteur, afin que vous puissiez itérer sur elles vous-même. |
Les nœuds suivants, en revanche, accèdent aux métadonnées de tous les acteurs de maillage statique du niveau actuel (ou de tous ceux qui partagent une classe donnée). Étant donné que votre niveau peut contenir un grand nombre d'acteurs, chacun doté de nombreuses propriétés, ces fonctions peuvent être coûteuses en ressources CPU et entraîner de mauvaises performances lorsqu'elles sont utilisées dans le cadre d'un gameplay d'exécution. Par conséquent, vous ne pouvez les utiliser que dans les graphiques que vous créez sur des classes Blueprint réservées à l'éditeur.
Vous trouverez ces nœuds sous la catégorie Editor Scripting (Scripts de l'éditeur) > Datasmith User Data (Données utilisateur Datasmith).
Nœud | Description |
---|---|
Get All Objects and Values for Key | Récupère une liste de tous les acteurs du niveau actuel qui ont une clé spécifiée dans leurs métadonnées Datasmith. Vous obtiendrez également une liste de toutes les valeurs enregistrées pour cette clé sur tous ces objets. |
Get All Datasmith User Data | Récupère la liste complète de tous les objets de métadonnées pour tous les acteurs du niveau actuel. |
Les nœuds Get Datasmith User Data et Get All Datasmith User Data ci-dessus renvoient les références d'objet de données utilisateur Datasmith. Cet objet possède une variable accessible, appelée Métadonnées, qui est un mappage de toutes les paires clé-valeur qui composent les métadonnées Datasmith de l'objet. Pour travailler avec ce type d'objet, faites glisser la broche de sortie et sélectionnez Variables > Get Metadata (Obtenir les métadonnées) :

Les clés et valeurs vous sont données sous forme de mappage. Vous pouvez ensuite utiliser les nœuds utilitaires de la catégorie Utilities (Utilitaires) > Map (Mappage) pour travailler avec les données. Par exemple, ce graphique itère sur toutes les clés une par une et récupère la valeur associée à chaque clé :
Pour plus d'informations sur les nœuds de mappage de blueprint, consultez les références de l'API Blueprint.
Exemple d'utilisation
Cette section montre un exemple simplifié de la manière dont vous pouvez visualiser vos métadonnées de ressource à l'exécution pour un objet que le joueur sélectionne dans le niveau.

Le texte est écrit par un widget UMG qui contient deux champs de texte, chacun lié à une variable de chaîne. Dans le graphique Blueprint du widget, une action personnalisée extrait deux éléments de métadonnées Datasmith d'un acteur que vous transmettez dans un événement personnalisé et enregistre ces éléments dans les variables liées.

Le blueprint de niveau suivant montre un exemple du mode d'ajout d'un widget comme celui-ci au début du jeu et de son alimentation avec l'acteur sous le curseur à chaque fois que l'utilisateur appuie sur un bouton de la souris.
Pour plus d'informations sur la création d'interfaces utilisateur dans UMG, consultez le guide de démarrage rapide du concepteur d'IU UMG et les sections environnantes.
Une fois le processus d'importation Datasmith terminé, vous pouvez accéder aux métadonnées de tous les acteurs ou des acteurs sélectionnés à l'aide de la classe unreal.DatasmithContentLibrary
. Pour plus de détails sur les fonctions suivantes, consultez les références de l'API Python.
|
|
|
|
|
Exemple d'utilisation
Dans les scripts Python que vous exécutez dans l'Unreal Editor, vous pouvez utiliser les métadonnées Datasmith après l'importation pour identifier les acteurs de maillage statique de votre niveau auxquels vous souhaitez appliquer certains traitements spéciaux.
import unreal
new_actor_name = "Exterior Walls"
metadata_key = "Type"
metadata_value = "Wall: Exterior"
meshes_to_join = set([])
# Itérer sur les acteurs du niveau actuel
all_actors = unreal.EditorLevelLibrary.get_all_level_actors()
for actor in all_actors:
# Récupérer la valeur des métadonnées Datasmith de cet acteur pour l'ensemble de clés ci-dessus, le cas échéant
actor_value = unreal.DatasmithContentLibrary.get_datasmith_user_data_value_for_key(actor, metadata_key)
# Si la clé existe et que sa valeur contient un mot-clé défini ci-dessus, ajoutez l'acteur à une liste
if actor_value and metadata_value in actor_value:
print("found a matching actor: " + actor_value)
meshes_to_join.add(actor)
# Fusionner tous les acteurs trouvés ci-dessus en un seul acteur aux nombreux composants
options = unreal.EditorScriptingJoinStaticMeshActorsOptions(destroy_source_actors=True, new_actor_label=new_actor_name, rename_components_from_source=True)
unreal.EditorLevelLibrary.join_static_mesh_actors(meshes_to_join, options)
print "Merged all actors!"