Le framework d'Interchange est le framework d'importation et d'exportation de l'Unreal Engine. Il prend en charge tous les formats de fichiers, fonctionne de manière asynchrone, se personnalise selon vos besoins et peut être déployé en temps réel.
Interchange utilise une base de code extensible et fournit une pile de pipelines personnalisable. Vous avez ainsi la liberté de modifier le pipeline d'importation à l'aide d'un script C++ ou Python, ou à l'aide d'un blueprint pour l'adapter aux besoins de votre projet.
Concepts et termes importants
Les concepts et termes suivants relatifs à l'utilisation d'Interchange revêtent une importance particulière :
Pipeline : une collection d'opérations qui traitent les données importées. Un pipeline expose les options utilisées pour personnaliser le processus d'importation.
Pile de pipelines : une liste ordonnée de pipelines qui traitent un fichier importé. Les pipelines sont combinés dans la pile et assignés à des formats de fichiers spécifiques. Pour accéder aux piles de pipelines, sélectionnez Paramètres du projet > Interchange.
Fabrique : une opération qui génère la ressource à partir des données importées.
Activer les plug-ins Interchange
Le framework d'Interchange a besoin des plug-ins Interchange Editor et Interchange Framework, qui sont activés par défaut. Si ces plug-ins ne sont pas activés dans votre projet, vous pouvez les activer dans les paramètres du projet.
Pour plus d'informations sur l'activation des plug-ins, consultez la rubrique Travailler avec des plug-ins.
Importer une ressource
Il existe plusieurs méthodes d'importation de ressources dans l'Unreal Engine.
Vous pouvez importer des ressources dans le tiroir à contenu ou le navigateur de contenu. Vous pouvez également importer des ressources en sélectionnant Fichier > Importer dans le niveau.
Pour plus d'informations sur l'importation de fichiers, consultez la rubrique Importer directement des ressources.
L'option Importer dans le niveau ne fonctionne actuellement qu'avec les formats de fichiers glTF et MaterialX.
Processus d'importation
Pour commencer à importer, utilisez d'abord l'une des méthodes décrites ci-dessus. Cela entraînera l'ouverture de la fenêtre Configuration du pipeline d'Interchange :
Ouvrez le menu déroulant Choisir la pile de pipelines et sélectionnez la pile de pipelines à utiliser dans la liste.
Configurez vos paramètres.
Cliquez sur Importer pour terminer le processus.
À chaque importation, le moteur vérifie si le format de fichier est pris en charge par le framework d'Interchange. Si c'est le cas, Interchange utilise la pile de pipelines d'importation appropriée pour votre format.
Interchange procède ensuite comme suit :
Interchange convertit les données importées en une structure de nœud intermédiaire dans l'Unreal Engine.
Les données d'Interchange sont traitées via la pile de pipelines et suivent les instructions d'importation.
Utiliser des fabriques pour générer la ressource à partir du résultat.
Si le format de fichier n'est pas pris en charge par Interchange, l'Unreal Engine utilise l'ancien framework pour importer le fichier.
La fenêtre Configuration des pipelines d'Interchange propose les options suivantes :
| Option | Description |
|---|---|
Disposition de base | Filtrer les options de pipeline d'importation jusqu'aux propriétés de base des pipelines. |
Filtrer selon le contenu | Filtrer les options de pipeline d'importation en fonction des données présentes dans le fichier source. |
Choisir la pile de pipelines | Sélectionner la pile de pipelines utilisée pour cette importation. |
La prise en charge du format de fichier FBX est actuellement expérimentale. Pour activer l'importation de fichiers FBX à l'aide d'Interchange, utilisez les commandes de console suivantes :
| Commande de console | Description |
|---|---|
Interchange.FeatureFlags.Import.FBX | Activer/désactiver la prise en charge expérimentale de l'importation de fichiers FBX à l'aide d'Interchange. |
Interchange.FeatureFlags.Import.FBX.ToLevel | Activer/désactiver la prise en charge expérimentale de l'importation de fichiers FBX dans le niveau. |
Aperçu d'Interchange
La fenêtre d'éditeur Aperçu d'Interchange s'ouvre lorsque vous cliquez sur le bouton Aperçu dans la fenêtre Configuration du pipeline d'Interchange :
Cette fenêtre présente :
Une liste des ressources qui seront créés.
Leur type sous forme d'icône ou dans le texte de l'infobulle (matériau, maillage statique, texture 2D, etc.).
Leurs propriétés qui sont définies par l'étape de pré-importation du pipeline.
Aperçu des conflits
Si le processus d'importation détecte des modifications dans la structure du matériau ou du squelette d'une ressource réimportée, il met en évidence le pipeline concerné. La fenêtre Aperçu des conflits s'ouvre lorsque vous cliquez sur Afficher les conflits :
Cette fenêtre met en évidence chaque conflit pour vous informer des modifications apportées lors de la réimportation de la ressource.
Dans les versions précédentes, vous pouviez choisir de conserver l'assignation de matériau d'origine ou de la remplacer à partir de la fenêtre d'aperçu des conflits. Cela n'est plus possible via Interchange. Pour modifier le matériau assigné à une ressource, vous devez effectuer la correction dans le fichier source ou utiliser l'éditeur de maillage statique. Pour plus d'informations sur l'utilisation de l'éditeur de maillage statique, consultez la page Appliquer un matériau via l'éditeur de maillage statique.
Réimporter des ressources à l'aide d'Interchange
Lorsque vous réimportez une ressource précédemment importée à l'aide d'Interchange, l'Unreal Engine mémorise la pile de pipelines et les options utilisées et affiche ces dernières.
Importer une ressource à l'aide d'un blueprint
Vous pouvez utiliser le blueprint pour importer des ressources dans l'Unreal Engine via Interchange Framework.
Vous pouvez, par exemple, utiliser Blueprint pour importer des fichiers à l'aide d'Interchange lors de l'exécution dans une application basée sur l'Unreal Engine. L'exemple ci-dessus crée une fonction qui importe un fichier de texture dans un emplacement de fichier spécifié à l'aide de la pile de pipelines de texture par défaut. Cette méthode d'importation ne prend actuellement pas en charge les données de maillage squelettique ou d'animation.
Créer une nouvelle classe de blueprint
Procédez comme suit pour recréer l'exemple :
Dans votre projet, créez une nouvelle classe de blueprint d'acteur pour contenir la fonction. Pour créer le blueprint d'acteur, faites un clic droit dans le navigateur de contenu, puis sélectionnez Classe de blueprint dans le menu contextuel.
Dans la fenêtre Choisir la classe parente, sélectionnez Acteur et nommez la nouvelle classe de blueprint InterchangeActor.
Ajouter une fonction
Pour ajouter une fonction :
Double-cliquez sur le nouveau Blueprint pour ouvrir l'éditeur.
Dans le panneau My Blueprint, accédez au paramètre Fonctions, cliquez sur le bouton + et nommez la nouvelle fonction InterchangeImport.
Ajouter et connecter les nœuds
Pour ajouter et connecter les nœuds :
Ajoutez un nœud Sequence et connectez-le à la sortie de la fonction.
Connectez la sortie Then 0 et créez un nœud Create Source Data pour référencer le fichier existant qui sera importé.
Connectez l'entrée In File Name du nœud Create Source Data et sélectionnez Promouvoir en variable dans le menu contextuel.
Nommez la nouvelle variable de chaîne FilePath. Elle contient l'emplacement du fichier qui sera importé.
Dans le blueprint, sélectionnez la nouvelle variable et cochez la case Instance modifiable.
Promouvez la sortie du nœud Create Source Data en une nouvelle variable nommée SourceData.
Faites glisser la sortie Then 1 du nœud Sequence et créez un nœud Get Interchange Manager Scripted. Cette opération crée un pointeur vers le gestionnaire Interchange qui est utilisé à l'étape suivante.
Faites glisser la sortie Get Interchange Manager Scripted et créez un nœud Import Asset. Connectez la sortie Return Value du nœud Get Interchange Manager Scripted à l'entrée Target du nœud Import Asset.
Faites glisser l'entrée Content Path et promouvez-la en une nouvelle variable nommée SavePath. Elle contient l'emplacement du fichier nouvellement importé.
Dans le blueprint, sélectionnez la nouvelle variable et cochez la case Instance modifiable.
Obtenez une référence à la variable Source Data et connectez-la à l'entrée Source Data du nœud Import Asset.
Faites glisser l'entrée Import Asset Parameters et créez un nœud Make Input Asset Parameters.
Rendre la fonction disponible à l'exécution
Pour rendre la fonction disponible à l'exécution :
Dans My Blueprint, cliquez sur la fonction InterchangeImport, puis cochez la case située à côté de Appeler dans l'éditeur dans le panneau Détails. Cette option rend la fonction disponible à l'exécution dans le panneau Détails de l'objet InterchangeActor.
Enregistrez et compilez votre blueprint.
Utiliser votre nouveau blueprint
Faites glisser une copie du blueprint InterchangeActor dans le niveau.
Cliquez sur Jouer.
Dans l'organiseur, sélectionnez InterchangeActor.
Dans le panneau Détails, renseignez le FilePath et le SavePath.
Cliquez sur le bouton Importation Interchange pour importer votre fichier.
La ressource est directement générée dans la scène si vous utilisez un nœud Import Scene avec l'exemple de blueprint ci-dessus.
Utiliser Interchange dans une application préparée
Si vous prévoyez d'utiliser le framework d'Interchange au moment de l'exécution dans une application préparée, accédez à Paramètres du projet > Projet - Empaquetage > Répertoires de ressources supplémentaires à préparer et ajoutez le dossier Interchange.
Importer une ressource avec Python
Vous pouvez utiliser un script Python pour importer des ressources dans l'Unreal Engine via le framework d'Interchange.
import unreal
import_path = "C:/Users/foo/Downloads/Fbx/SkeletalMesh/Animations/Equilibre.fbx"
import_extension = unreal.Paths.get_extension(import_path, False)
is_gltf = import_extension == 'glb' or import_extension == 'gltf'
is_fbx = import_extension == 'fbx'
is_usd = import_extension == 'usd'
Dans l'exemple ci-dessus, un script Python est utilisé pour importer le fichier Equilibre.fbx. Le script vérifie si le format du fichier est .glb .gltf, .fbx ou .usd, puis assigne le bon pipeline.
Modifier la pile de pipelines
L'un des avantages du framework d'Interchange est la possibilité de sélectionner et de personnaliser la pile de pipelines, une pile personnalisable de processus qui traitent les données de ressources. Vous pouvez ajouter des pipelines à la pile de pipelines par défaut pour ajouter des comportements pendant le processus d'importation.
L'Unreal Engine est configuré avec les pipelines par défaut suivants :
Pipeline de ressources par défaut ;
Pipeline de matériaux par défaut ;
Pipeline de textures par défaut ;
Pipeline de ressources de scène par défaut ;
Pipeline de niveaux de scène par défaut ;
Pipeline d'inspecteur de graphiques par défaut.
Chaque pipeline par défaut contient les options les plus fréquemment utilisées pour ce type d'importation. Vous pouvez adapter ces pipelines aux besoins spécifiques de votre projet.
Modifier un pipeline existant
Chacun des pipelines par défaut peut être adapté aux besoins de votre projet et de votre équipe.
Les méthodes suivantes vous permettent de personnaliser les options d'importation de votre projet :
Ajoutez, supprimez ou réorganisez la pile de pipelines existante dans les paramètres de votre projet.
Modifier les pipelines utilisés par défaut ;
Modifier les pipelines par défaut existants ;
Créer un pipeline personnalisé.
Modifier les paramètres du projet
La pile de pipelines se trouve à l'emplacement suivant : Paramètres du projet > Engine > Interchange :
La pile de pipelines contient les paramètres par défaut des opérations ou éléments suivants :
Importer du contenu ;
Importer dans le niveau ;
Interface de l'éditeur ;
Générique ;
Classe du pipeline générique de l'éditeur.
Importer du contenu ;
L'Unreal Engine utilise ces paramètres pour importer du contenu dans le tiroir à contenu ou le navigateur de contenu.
Vous pouvez modifier les paramètres de chaque type de contenu répertorié. Vous pouvez également ajouter des titres supplémentaires si nécessaire. Par exemple, la configuration par défaut contient des ressources, des matériaux et des textures. Vous pouvez ajouter une section supplémentaire à la pile de pipelines pour les animations, puis un ou plusieurs pipelines personnalisés pour gérer les fichiers d'animation entrants.
Importer dans le niveau ;
Dans la fenêtre Éditeur, vous trouverez les options Fichier > Importer dans le niveau. Par défaut, cette fonction utilise deux pipelines qui fonctionnent ensemble. Ces pipelines importent les données de l'acteur à partir d'un fichier, puis génèrent un acteur dans le niveau. La fonction d'importation utilise les paramètres suivants :
DefaultSceneAssetPipeline repose sur la même classe que DefaultAssetPipeline et est conçu pour l'importation de scènes.
DefaultSceneLevelPipeline génère l'acteur dans le monde après la transmission des données via DefaultSceneAssetPipeline.
Modifier les pipelines par défaut existants
Vous pouvez modifier les propriétés des pipelines d'Interchange par défaut pour modifier les éléments suivants :
Les valeurs par défaut ;
La visibilité ;
L'état en lecture seule.
Procédez comme suit pour modifier les paramètres des pipelines d'Interchange par défaut :
Localisez les pipelines par défaut dans le tiroir à contenu ou le navigateur de contenu et double-cliquez sur l'un d'eux pour l'ouvrir. Les pipelines se trouvent dans le dossier suivant : Engine > Plugins > Interchange Framework Content > Pipelines. Si vous ne retrouvez pas le dossier Engine, cliquez sur Paramètres dans le coin supérieur droit du tiroir à contenu ou du navigateur de contenu et cochez la case Afficher le contenu du moteur.
Modifiez les éléments suivants selon vos besoins :
Visibilité pendant le processus d'importation et de réimportation.
Paramètre par défaut.
Indiquer si la propriété est en lecture seule pendant le processus d'importation.
Enregistrez et fermez la fenêtre.
Créer un pipeline personnalisé
Vous pouvez créer de nouveaux pipelines d'Interchange pour personnaliser davantage le processus d'importation à l'aide de blueprints ou de scripts C++ ou Python.
Créer un pipeline personnalisé à l'aide de blueprints
Pour créer un nouveau pipeline d'Interchange à l'aide de blueprints, procédez comme suit :
Dans le tiroir à contenu ou le navigateur de contenu, faites un clic droit et sélectionnez Créer une classe de blueprint.
Dans la fenêtre Choisir la classe parente, développez la catégorie Toutes les classes et sélectionnez InterchangePipelineBase comme classe parente.
Double-cliquez sur le nouveau blueprint pour ouvrir l'éditeur de blueprint.
Un pipeline personnalisé créé à l'aide de blueprints possède les fonctions suivantes qui peuvent être remplacées pour ajouter un comportement personnalisé.
| Fonction de remplacement | Description |
|---|---|
Exécution programmée possible sur n'importe quel thread | Indiquer au gestionnaire Interchange que ce pipeline peut être exécuté en mode asynchrone. |
Exécution programmée du pipeline d'exportation | S'exécute pendant le processus d'exportation (la fonctionnalité n'est actuellement pas fonctionnelle). |
Exécution programmée du pipeline | S'exécute après la conversion du fichier. Il crée la fabrique nécessaire pour générer des ressources. |
Exécution programmée du pipeline post-fabrique | S'exécute après que la fabrique a créé une ressource, mais avant que la fonction PostEditChange ne soit appelée. |
Exécution programmée du pipeline post-importation | S'exécute une fois la ressource entièrement importée et la fonction PostEditChange appelée. |
Définir par script l'index de la source de réimportation | S'exécute et indique au pipeline l'index de la source à réimporter. Utilisez cette fonction lors de la réimportation d'une ressource qui peut avoir plusieurs sources. Par exemple, un maillage squelettique qui possède un fichier source pour la géométrie et un autre pour les informations de surfaçage. |
Créer un pipeline personnalisé à l'aide de scripts C++
Pour créer un nouveau pipeline d'Interchange à l'aide de C++, créez un fichier d'en-tête contenant les éléments suivants :
#pragma once
#include "CoreMinimal.h"
#include "InterchangePipelineBase.h"
#include "InterchangeSourceData.h"
#include "Nodes/InterchangeBaseNodeContainer.h"
#include "InterchangeMyPipeline.generated.h"
Créez ensuite un fichier source contenant les éléments suivants :
#include "InterchangeMyPipeline.h"
void UInterchangeMyPipeline::ExecutePipeline(UInterchangeBaseNodeContainer* NodeContainer, const TArray<UInterchangeSourceData*>& InSourceDatas)
{
Super::ExecutePipeline(NodeContainer, InSourceDatas);
// Put the logic you need on either translated nodes or factory nodes
}Pour plus d'informations sur l'utilisation de C++ dans l'Unreal Engine, consultez la rubrique Programmer avec C++.
Créer un pipeline personnalisé à l'aide de scripts Python
Pour créer un nouveau pipeline d'Interchange à l'aide d'un script Python, créez un nouveau script Python et utilisez les paramètres du projet pour l'ajouter aux scripts de démarrage. Pour plus d'informations sur l'utilisation de scripts Python dans l'Unreal Engine, consultez la rubrique Créer des scripts pour l'Unreal Editor à l'aide de Python.
Dans l'exemple de script ci-dessous, le script Python est utilisé pour créer un pipeline d'importation de ressources de base.
import unreal
@unreal.uclass()
class PythonPipelineTest(unreal.InterchangePythonPipelineBase):
import_static_meshes = unreal.uproperty(bool,meta=dict(Category="StaticMesh"))
import_skeletal_meshes = unreal.uproperty(bool,meta=dict(Category="SkeletalMesh"))
def cast(self, object_to_cast, object_class):
try: