El marco de Interchange es el marco de importación y exportación de Unreal Engine. Es independiente del formato de archivo, asincrónico, personalizable y se puede usar en tiempo de ejecución.
Interchange usa un código base ampliable y proporciona una pila de canalización personalizable. Esto te da la libertad de editar la canalización de importación con C++, Blueprint o Python para adaptarlo a las necesidades de tu proyecto.
Conceptos y términos importantes
Al usar Interchange, los siguientes conceptos y términos son importantes:
Canalización: conjunto de operaciones que procesan datos importados. Una canalización expone las opciones usadas para personalizar el proceso de importación.
Pila de canalización: una lista ordenada de procesos que procesan un archivo importado. Las canalizaciones se combinan en la pila y se asignan a formatos de archivo específicos. Las pilas de canalización se encuentran en Configuración del proyecto > Interchange.
Generador: operación que genera el recurso a partir de los datos importados.
Cómo activar los complementos de Interchange
El marco de Interchange requiere los complementos Interchange Editor e Interchange Framework, que están activados de forma predeterminada. Si estos complementos no están activados en tu proyecto, puedes activarlos en la configuración de tu proyecto .
Para obtener más información sobre cómo activar complementos, consulta Cómo trabajar con complementos.
Cómo importar un recurso
Los recursos se importan a Unreal Engine usando distintos métodos.
Puedes importar recursos en el almacén de contenido, en el explorador de contenido o seleccionando Archivo > Importar al nivel.
Para obtener más información sobre cómo importar archivos, consulta la sección Cómo importar recursos directamente.
Importar al nivel actualmente solo funciona con los formatos de archivo glTF y MaterialX.
Proceso de importación
Inicia el proceso de importación usando uno de los métodos enumerados anteriormente. Esto abrirá la ventana Configuración de canalización de Interchange:
Abre el menú desplegable Elige pila de canalización y selecciona la pila de canalizaciones de la lista.
Configura tus ajustes.
Pulsa Importar para completar el proceso.
En cada importación, el motor comprueba si el marco de Interchange es compatible el formato de archivo. Si el archivo es compatible, Interchange usa la pila de canalización de importación apropiada para tu formato.
A continuación, Interchange pasa por el siguiente proceso:
Interchange convierte los datos importados en una estructura de nodos intermediarios en Unreal Engine.
Interchange procesa los datos a través de la pila de canalización y sigue las instrucciones para la importación.
Usa generadores para generar el recurso a partir del resultado.
Si el formato de archivo no es compatible con Interchange, Unreal Engine usa el marco heredado para importar el archivo.
La ventana Configuración de canalización de Interchange tiene las siguientes opciones:
| Opción | Descripción |
|---|---|
Disposición básica | Filtra las opciones de canalización de importación hasta las propiedades canalización básicas. |
Filtrar según contenido | Filtra las opciones de canalización de importación en función de los datos del archivo de origen. |
Elige pila de canalización | Selecciona la pila de canalización que se usará para esta importación. |
La compatibilidad con el formato de archivo FBX encuentra actualmente en fase experimental. Para activar la importación de FBX mediante Interchange, usa los siguientes comandos de consola:
| Comando de consola | Descripción |
|---|---|
Interchange.FeatureFlags.Import.FBX | Activa o desactiva la compatibilidad experimental con la importación de FBX mediante Interchange. |
Interchange.FeatureFlags.Import.FBX.ToLevel | Activa o desactiva la compatibilidad experimental con la opción Importar al nivel de FBX. |
Previsualización de Interchange
Al hacer clic en el botón Previsualización de la ventana Configuración de canalización de Interchange, se abre la ventana del editor de previsualización de Interchange:
En esta ventana podrás ver lo siguiente:
La lista de recursos que se crearán.
Sus tipos como iconos o en el texto de la burbuja informativa emergente (materiales, malla estática o textura 2D).
Sus propiedades se configuran en el paso previo a la importación de la canalización.
Previsualización de conflictos
Si el proceso de importación detecta cambios en el material o en la estructura básica de un recurso reimportado, resalta la canalización afectada. Al hacer clic en Mostrar conflicto, se abrirá la ventana de previsualización de conflictos:
Esta ventana resalta cada conflicto para informarte de qué cambia cuando se reimporta el recurso.
En versiones anteriores, podías optar por conservar la asignación de material original o reemplazarla desde la ventana de conflictos. Ya no se puede hacer esto con Interchange. Para cambiar el material asignado de un recurso, debes hacer la corrección en el archivo de origen o usar el editor de mallas estáticas. Para obtener más información sobre cómo usar el editor de mallas estáticas, consulta la sección Aplicación de material a través del editor de mallas estáticas.
Cómo reimportar recursos usando Interchange
Cuando reimportas un recurso que ya se había importado con Interchange, Unreal Engine recuerda la pila de canalización y las opciones que se usaron, y las muestra.
Cómo importar un recurso mediante blueprint
Puedes usar Blueprint para importar recursos en Unreal Engine a través del marco de Interchange.
Por ejemplo, puedes usar Blueprint para importar archivos usando Interchange en tiempo de ejecución en una aplicaciones basada en Unreal Engine. El ejemplo anterior crea una función que importa un archivo de textura a una posición de archivo específica usando la pila predeterminada de canalización de texturas. Actualmente, este método de importación no es compatible con malla esquelética ni con datos de animación.
Crea una nueva clase de Blueprint.
Para recrear el ejemplo, sigue los pasos que se indican a continuación:
En tu proyecto, crea una nueva clase Actor de Blueprint que contenga la función. Para crear el blueprint de actor, haz clic derecho en el explorador de contenido, dirígete al menú contextual y selecciona Clase de Blueprint.
En la ventana Elegir clase padre, selecciona Actor y nombra la nueva clase de Blueprint InterchangeActor.
Cómo añadir una función
Para añadir una función:
Haz doble clic en el nuevo blueprint para abrir el editor.
En el panel Mi blueprint, ve al ajuste Funciones, haz clic en el botón + y nombra la nueva función InterchangeImport.
Cómo añadir y conectar los nodos
Para añadir y conectar los nodos:
Añade un nodo Sequence y conéctalo a la salida de la función.
Conecta la salida Then 0 y crea un nodo Create Source Data para que haga referencia al archivo existente que se importará.
Conecta la entrada In File Name de Create Source Data y, en el menú contextual, selecciona Ascender a variable.
Nombra la nueva variable de cadena FilePath. Contiene la posición del archivo que se importará.
En el blueprint, selecciona la nueva variable y haz clic en la casilla de verificación Con instancia editable.
Asciende la salida del nodo Create Source Data a una nueva variable denominada SourceData.
Arrastra desde la salida Then 1 de la secuencia y crea un nodo Get Interchange Manager Scripted. Esto crea un puntero al gestor de Interchange que se usa en el siguiente paso.
Arrastra desde el resultado de Get Interchange Manager Scripted y crea un nodo Import Asset. Conecta el valor de retorno de Get Interchange Manager Scripted a la entrada Target de Import Asset.
Arrastra desde la entrada Content Path y asciéndela a una nueva variable llamada SavePath. Contiene la posición del archivo recién importado.
En el blueprint, selecciona la nueva variable y marca la casilla de verificación Con instancia editable.
Obtén una referencia a la variable Source Data y conéctala a la entrada Source Data en Import Asset.
Arrastra desde la entrada Import Asset Parameters y crea un nodo Make Input Asset Parameters.
Cómo hacer que la función esté disponible en tiempo de ejecución
Para que la función esté disponible en tiempo de tiempo de ejecución:
En Mis blueprints, haz clic en la función InterchangeImport y marca la casilla de verificación junto a Llamada al editor en el panel Detalles. Esta opción hace que la función esté disponible en tiempo de ejecución en los detalles del objeto InterchangeActor.
Guarda y compila tu blueprint.
Cómo usar tu nuevo blueprint
Arrastra una copia del blueprint InterchangeActor al nivel.
Haz clic en Reproducir.
En el esquematizador, selecciona el InterchangeActor.
En el panel Detalles, rellena FilePath y SavePath.
Haz clic en el botón Importación de Interchange para importar tu archivo.
Si usas un nodo Import Scene con el blueprint de ejemplo anterior, el recurso se genera directamente en la escena.
Cómo usar Interchange en una aplicación cooked
Si tienes pensado usar el marco de Interchange durante el tiempo de ejecución de una aplicación cooked, ve a Configuración del proyecto > Proyecto - Empaquetado > Directorios de recursos adicionales a los que hacer cook y añade la carpeta Interchange.
Cómo importar un recurso con Python
Puedes usar secuencias de secuenciar de Python para importar recursos en Unreal Engine a través del marco de 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'
En el ejemplo anterior, se usa una secuencia de comandos de Python para importar el archivo Equilibre.fbx. La secuencia de comandos comprueba si el formato del archivo es .glb .gltf .fbx o .usd y luego asigna la canalización correcta.
Cómo editar la pila de canalización
Una de las ventajas del marco de Interchange es la capacidad de seleccionar y personalizar la pila de canalización, una pila personalizable de procesos que procesa los datos del recurso . Puedes añadir canalizaciones a la pila de canalización predeterminada para añadir comportamientos durante el proceso de importación.
Unreal Engine incluye las siguientes canalizaciones predeterminadas:
Canalización de recursos predeterminada
Canalización de materiales predeterminada
Canalización de texturas predeterminada
Canalización de recursos de escena predeterminada
Canalización de niveles de escena predeterminada
Canalización de inspectores de grafos predeterminada
Cada canalización contiene las opciones más comunes usadas para ese tipo de importación. Puedes personalizar estas canalizaciones para satisfacer las necesidades específicas de tu proyecto.
Cómo editar una canalización existente
Cada una de las canalizaciones predeterminadas se puede personalizar para adaptarse a las necesidades de tu proyecto y equipo.
A continuación se indican algunos métodos para personalizar las opciones de importación de tu proyecto:
Añade, elimina o reordena la pila de canalización existente en la configuración del proyecto.
Cambia qué canalizaciones se usan de manera predeterminada.
Modifica las canalizaciones predeterminadas existentes.
Crea una canalización personalizada.
Cómo editar la configuración del proyecto
Puedes encontrar la pila de canalización en Configuración del proyecto en Motor > Interchange:
La pila de canalización contiene los ajustes predeterminados para:
ImportContent
ImportIntoLevel
EditorInterface
Genérico
Clase de canalización genérica del editor
ImportContent
Unreal Engine usa estos ajustes para importar contenido al almacén de contenido o al explorador de contenido.
Puedes modificar los ajustes para cada tipo de contenido de la lista. También puedes añadir títulos adicionales si es necesario. Por ejemplo, la configuración predeterminada contiene recursos, materiales y texturas. Podrías añadir una sección adicional a la pila de canalización para animaciones y luego añadir una o más canalizaciones personalizadas para gestionar los archivos de animación entrantes.
ImportIntoLevel
En la ventana del editor, ve a Archivo > Importar al nivel. Por defecto, esta función usa dos canalizaciones que funcionan juntas. Estas canalizaciones importan los datos del actor desde un archivo y luego lo hacen aparecer en el nivel. La función de importación utiliza los siguientes ajustes:
DefaultSceneAssetPipeline se basa en la misma clase que DefaultAssetPipeline y está diseñado para importar escenas.
DefaultSceneLevelPipeline genera el actor en el mundo después de que los datos pasen por DefaultSceneAssetPipeline.
Cómo modificar las canalizaciones predeterminadas existentes
Puedes modificar las propiedades de las canalizaciones de Interchange predeterminadas para cambiar lo siguiente:
Valores predeterminados
Visibilidad
Estado de solo lectura
Para cambiar los ajustes de las canalizaciones de Interchange predeterminados, sigue los pasos que se indican a continuación:
Localiza las canalizaciones predeterminadas en el almacén de contenido o el explorador de contenido y haz doble clic en una para abrirla. Las canalizaciones se encuentran en la carpeta Motor > Complementos > Contenido del marco de Interchange > Canalizaciones. Si no puedes ver la carpeta Motor, haz clic en Ajustes en la esquina superior derecha del almacén de contenido o del explorador de contenido y marca la casilla de verificación Mostrar contenido del motor.
Edita lo siguiente si es necesario:
Visibilidad durante el proceso de importación y reimportación.
Ajuste predeterminado.
Determina si la propiedad es de solo lectura durante el proceso de importación.
Guarda y cierra la ventana.
Cómo crear una canalización personalizada
Puedes crear nuevas canalizaciones de Interchange para personalizar aún más el proceso de importación mediante Blueprints, C++ o Python.
Creación de una canalización personalizada con blueprints
Para crear una nueva canalización de Interchange con blueprints, sigue los pasos que se indican a continuación:
En el almacén de contenido o el explorador de contenido, haz clic con el botón derecho y selecciona Crear clase de Blueprint.
En la ventana Elegir clase padre, amplía la categoría Todas las clases y selecciona InterchangePipelineBase como Clase padre.
Haz doble clic en el nuevo blueprint para abrir el editor de blueprints.
Una canalización personalizada creada con blueprints tiene las siguientes funciones que se pueden anular para añadir un comportamiento personalizado .
| Anular función | Descripción |
|---|---|
Scripted Can Execute on Any Thread | Informa al gesto de Interchange de que este canalización puede ejecutarse en modo asíncrono. |
Scripted Execute Export Pipeline | Se ejecuta durante el proceso de exportación (por el momento, la función no está operativa). |
Scripted Execute Pipeline | Se ejecuta después de trasladar el archivo. Crea el generador necesario para generar recursos. |
Scripted Execute Post Factory Pipeline | Se ejecuta después de que el generador cree un recurso, pero antes de que se llame a la función PostEditChange. |
Scripted Execute Post Import Pipeline | Se ejecuta después de que el recurso se haya importado por completo y se llame a la función PostEditChange. |
Scripted Set Reimport Source Index | Se ejecuta e indica a la canalización qué índice de origen reimportar. Usa esta función al reimportar un recurso que pueda tener más que un origen. Por ejemplo, una malla esquelética que tenga un archivo de origen para la geometría y otro para la información de revestimiento. |
Cómo crear una canalización personalizada con C++
Para crear una nueva canalización de Interchange con C++, crea un archivo de encabezado que contenga lo siguiente:
#pragma once
#include "CoreMinimal.h"
#include "InterchangePipelineBase.h"
#include "InterchangeSourceData.h"
#include "Nodes/InterchangeBaseNodeContainer.h"
#include "InterchangeMyPipeline.generated.h"
A continuación, crea un archivo de origen que contenga lo siguiente:
#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
}Para obtener más información sobre cómo trabajar con C++ en Unreal Engine, consulta Programación con C++.
Cómo crear una canalización personalizada con Python
Para crear una nueva canalización de Interchange con una secuencia de comandos de Python, crea una nueva secuencia de comandos de Python y usa la configuración del proyecto para añadirla a la carpeta Startup Scripts. Para obtener más información sobre cómo trabajar con las secuencias de comandos de Python en Unreal Engine, consulta Secuencias de comandos de Unreal Editor con Python.
En la siguiente secuencia de comandos de ejemplo, se usa una secuencia de comandos de Python para crear un recurso de canalización de importación.
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: