O Interchange Framework é o framework de importação e exportação da Unreal Engine. É um formato de arquivo independente, assíncrono, personalizável e pode ser usado durante o tempo de execução.
O Interchange usa uma base de código extensível e fornece uma pilha de pipeline personalizável. Isso dá a liberdade de editar o pipeline de importação usando C++, Blueprint ou Python para atender às necessidades do projeto.
Conceitos e termos importantes
Ao usar o Interchange, os seguintes conceitos e termos são importantes:
Pipeline: uma coleção de operações que processam dados importados. O pipeline expõe as opções usadas para personalizar o processo de importação.
Pilha de pipeline: uma lista ordenada de pipelines que processam um arquivo importado. Os pipelines são combinados na pilha e atribuídos a formatos de arquivo específicos. As pilhas do pipeline estão localizadas em Configurações do projeto > Interchange.
Fábrica: uma operação que gera o ativo a partir dos dados importados.
Habilitar plugins do Interchange
O Interchange Framework requer os plugins Interchange Editor e Interchange Framework, que vêm habilitados por padrão. Se esses plugins não estiverem habilitados no projeto, você poderá habilitá-los nas configurações do projeto para uso.
Para obter mais informações sobre como habilitar plugins, consulte Com trabalhar com plugins.
Importar um ativo
Os ativos são importados para a Unreal Engine usando um dos vários métodos diferentes.
Você pode importar ativos na Gaveta de Conteúdo ou no Navegador de Conteúdo, ou então selecionar Arquivo > Importar para Nível.
Para obter mais informações sobre como importar arquivos, consulte Como importar ativos diretamente.
No momento, Importar para Nível só funciona com os formatos de arquivo glTF e MaterialX.
Processo de importação
Inicie o processo de importação usando um dos métodos listados acima. Isso abre a janela Configuração de pipeline do Interchange:
Abra o menu suspenso Escolher pilha de pipeline e selecione na lista a pilha de pipeline a ser usada.
Defina suas configurações.
Pressione Importar para concluir o processo.
A cada importação, a engine verifica se o formato do arquivo é compatível com o Interchange Framework. Se o arquivo for compatível, o Interchange usará a pilha de pipeline de importação apropriada para seu formato.
Em seguida, oInterchange passa pelo seguinte processo:
O Interchange converte os dados importados em uma estrutura de nó intermediária na Unreal Engine.
O Interchange processa os dados na pilha do pipeline e segue as instruções para a importação.
Fábricas são usadas para gerar o ativo a partir do resultado.
Se o formato do arquivo não for compatível com o Interchange, a Unreal Engine usará o framework legado para importar o arquivo.
A janela "Configuração de pipeline do Interchange" tem as seguintes opções:
| Opção | Descrição |
|---|---|
Layout básico | Filtra as opções do pipeline de importação para obter as propriedades básicas do pipeline. |
Filtrar por conteúdo | Filtra as opções do pipeline de importação com base nos dados encontrados no arquivo de origem. |
Escolher pilha de pipeline | Seleciona a pilha do pipeline usada para a importação. |
A compatibilidade com o formato de arquivo FBX ainda é experimental. Para habilitar a importação de FBX com o Interchange, use os seguintes comandos do console:
| Comando do console | Descrição |
|---|---|
Interchange.FeatureFlags.Import.FBX | Ativa o suporte experimental para importação de FBX usando o Interchange. |
Interchange.FeatureFlags.Import.FBX.ToLevel | Ativa a compatibilidade experimental para Importar para nível do FBX. |
Pré-visualização do Interchange
Ao clicar no botão Pré-visualização na janela Configuração de pipeline do Interchange, a janela do Editor de visualização do Interchange é aberta:
Nessa janela, você verá:
Uma lista de ativos que serão criados.
Os tipos deles na forma de ícones, ou em texto em dicas de ferramenta (materiais, malha estática, textura 2D).
As propriedades são definidas na etapa de pré-importação do pipeline.
Pré-visualização de conflitos
Se o processo de importação detectar alterações no material ou na estrutura do esqueleto de um ativo reimportado, o pipeline afetado será destacado. Ao clicar em Mostrar conflito, a janela Visualização de conflitos é aberta:
A janela destaca cada conflito para informar o que muda quando o ativo é reimportado.
Nas versões anteriores, você tinha a opção de preservar a atribuição de material original ou substituí-lo na janela de conflito. Você não pode mais fazer isso usando o Interchange. Para alterar o material atribuído de um ativo, faça a correção no arquivo de origem ou use o editor de malha estática. Para obter mais informações sobre como usar o editor de malha estática, consulte Como aplicar um material pelo editor de malha Estática.
Como reimportar ativos com o Interchange
Ao reimportar um ativo que foi importado anteriormente usando o Interchange, a Unreal Engine lembra a pilha do pipeline e as opções que foram usadas e exibe essas opções.
Importar um ativo usando o Blueprint
Você pode usar o Blueprint para importar ativos para a Unreal Engine pelo Interchange Framework.
Por exemplo, você pode usar Blueprint para importar arquivos usando o Interchange durante o tempo de execução num aplicativo baseado na Unreal Engine. O exemplo acima cria uma função que importa um arquivo de textura para um local de arquivo especificado usando a pilha de pipeline de textura padrão. No momento, esse método de importação não é compatível com malhas esqueléticas ou dados de animação.
Crie uma classe de Blueprint
Para recriar o exemplo, siga as etapas a seguir:
No projeto, crie uma classe de Blueprint de ator para armazenar a função. Para criar o Blueprint de ator, clique com o botão direito no Navegador de conteúdo, vá para o menu de contexto e selecione Classe de Blueprint.
Na janela Escolher classe pai, selecione Actor e atribua à nova classe de Blueprint o nome InterchangeActor.
Adicionar uma função
Para adicionar uma função:
Clique duas vezes no novo Blueprint para abrir o editor.
No painel Meu Blueprint, acesse aconfiguração Funções, clique no botão + e dê o nome InterchangeImport para a nova função.
Adicionar e conectar os nós
Para adicionar e conectar os nós:
Adicione um nó de Sequência e conecte-o à saída da função.
Conecte a saída Então 0 e crie um nó Criar dados de origem para referenciar o arquivo existente a ser importado.
Conecte a entrada No nome do arquivo em Criar dados de origem e, no menu de contexto, selecione Promover a variável.
Dê o nome FilePath para a nova variável de String. Ela contém a posição do arquivo que será importado.
No Blueprint, selecione a nova variável e clique na caixa de seleção de Instância editável.
Promova a saída do nó Criar dados de origem a uma variável chamada SourceData.
Arraste a partir da saída Então 1 na Sequência e crie um nó Obter gerenciador do Interchange com script. Será criado um ponteiro para o Interchange Manager para ser usado na próxima etapa.
Arraste a partir da saída Obter gerenciador do Interchange com script e crie um nó Importar ativo. Conecte o valor de retorno de Obter gerenciador do Interchange com script à Entrada alvo em Importar ativo.
Arraste a partir da entrada Caminho de conteúdo e promova-a a uma nova variável chamada SavePath. Ela cntém a posição do arquivo recém-importado.
No Blueprint, selecione a nova variável e marque a caixa de seleção de Instância editável.
Obtenha uma referência à variável Dados de origem e conecte-a à entrada Dados de origem em Importar ativo.
Arraste da entrada Importar parâmetros de ativos e crie um nó Criar parâmetros de ativos de entrada.
Disponibilizar a função em tempo de execução
Para tornar a função disponível em tempo de execução:
Em Meus Blueprints, clique na função InterchangeImport e clique na caixa de seleção ao lado de Chamar no editor no painel Detalhes. Essa opção disponibiliza a função durante o tempo de execução nos Detalhes do objeto InterchangeActor.
Salve e Compile seu Blueprint.
Usar o novo Blueprint
Arraste uma cópia do Blueprint InterchangeActor até o nível.
Clique em Reproduzir.
No Organizador, selecione InterchangeActor.
No painel Detalhes, preencha FilePath e SavePath.
Clique no botão Importação do Interchange para importar seu arquivo.
Se você usar um nó Importar cena com o Blueprint de exemplo acima, o ativo será gerado diretamente na cena.
Como usar o Interchange em um aplicativo preparado
Se você planejar usar o Interchange Framework durante o tempo de execução de um aplicativo preparado, acesse Configurações do projeto > Projeto - Packating > Diretórios de ativos adicionais para preparar e adicione a pasta Interchange.
Importar um ativo usando Python
Você pode usar código Python para importar ativos para a Unreal Engine através do Interchange Framework.
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'
No exemplo acima, um código Python é usado para importar o arquivo Equilibre.fbx. O código verifica se o formato do arquivo é .glb .gltf .fbx ou .usd e designa o pipeline correto.
Editar a pilha de pipeline
Uma das vantagens do Interchange Framework é a capacidade de selecionar e personalizar a pilha do pipeline, uma pilha personalizável de processos para trabalhar com os dados do ativo. Você pode acrescentar pipelines à pilha padrão de pipeline para adicionar comportamentos durante o processo de importação.
A Unreal Engine vem com os seguintes pipelines padrão:
Pipeline de ativos padrão
Pipeline de material padrão
Pipeline de textura padrão
Pipeline de ativos de cena padrão
Pipeline de nível de cena padrão
Pipeline do inspetor de gráfico padrão
Cada pipeline padrão contém as opções mais comuns usadas para esse tipo de importação. Você pode personalizar essas pipelines para atender às necessidades específicas do seu projeto.
Editar um pipeline existente
Cada pipeline padrão é personalizável para atender às necessidades do projeto e da equipe.
Veja a seguir métodos para personalizar as opções de importação do projeto:
Adicionar, remover ou reordenare a pilha de pipeline existente nas Configurações do projeto.
Alterar quais pipelines são usados por padrão.
Modificar os pipelines padrão existentes.
Criar um pipeline personalizado.
Editar as configurações do projeto
A pilha do pipeline está localizada em Configurações do projeto, em Engine > Interchange:
A pilha de pipeline contém as configurações padrão para:
Importar conteúdo
Importar para nível
Interface do editor
Genérico
Classe de pipeline genérico para o editor
Importar conteúdo
A Unreal Engine usa essas configurações para importar conteúdo para a Gaveta de conteúdo ou o Navegador de conteúdo.
Você pode alterar as configurações para cada tipo de conteúdo listado. Você também pode adicionar títulos, se necessário. Por exemplo, a configuração padrão contém Ativos, Materiais e Texturas. Você pode adicionar um segmento à pilha do pipeline para animações e, em seguida, adicionar um ou mais pipelines personalizados para manipular arquivos de animação de entrada.
Importar para nível
Na janela do Editor, localize Arquivo > Importar para nível. Por padrão, essa função usa dois pipelines que funcionam juntos. Esses pipelines importam os dados do ator de um arquivo e geram um ator nele. A função de importação usa as seguintes configurações:
DefaultSceneAssetPipeline se baseia na mesma classe de DefaultAssetPipeline e foi projetado para importação de cenas.
DefaultSceneLevelPipeline gera o ator no mundo depois que os dados passam por DefaultSceneAssetPipeline.
Modificar os pipelines padrão existentes
Modifique as propriedades dos pipelines padrão do Interchange para alterar o seguinte:
Valores padrão
Visibilidade
Status somente leitura
Para alterar as configurações dos pipelines padrão do Interchange, siga as etapas a seguir:
Encontre os pipelines padrão na Gaveta de conteúdo ou no Navegador de conteúdo e clique duas vezes em um deles para abrir. Os pipelines estão localizados na pasta Engine > Plugins > Conteúdo do Interchange Framework > Pipelines. Se você não conseguir ver a pasta Engine, clique em Configurações no canto superior direito da Gaveta de conteúdo ou do Navegador de conteúdo e marque a caixa de seleção de Mostrar conteúdo da engine.
Edite o seguinte, conforme necessário:
Visibilidade durante o processo de importação e reimportação.
Configuração padrão.
Determina se a propriedade é somente leitura durante o processo de importação.
Salve e feche a janela.
Criar um pipeline personalizado
Você pode criar pipelines do Interchange para personalizar ainda mais o processo de importação usando Blueprints, C++ ou Python.
Criar um pipeline personalizado usando Blueprints
Para criar um pipeline do Interchange usando Blueprints, siga as etapas a seguir:
Na Gaveta de conteúdo ou no Navegador de conteúdo, clique com o botão direito e selecione Criar classe de Blueprint.
Na janela Escolher classe pai, expanda a categoria Todas as classes e selecione InterchangePipelineBase como sua Classe pai.
Clique duas vezes no novo Blueprint para abrir o Editor de Blueprint.
Um pipeline personalizado criado usando Blueprints tem as seguintes funções, que podem ser sobrepostas para adicionar um comportamento personalizado.
| Função de substituição | Descrição |
|---|---|
Com script pode ser executado em qualquer thread | Comunica ao gerenciador do Interchange que esse pipeline pode ser executado no modo assíncrono. |
Pipeline de exportação de execução com script | É executada durante o processo de exportação (a funcionalidade atualmente não está funcional). |
Pipeline de execução com script | É executada após a translação do arquivo. Cria a fábrica necessária para gerar os ativos. |
Pipeline de fábrica pós-execução com script | É executada depois que a fábrica cria um ativo, mas antes de a função PostEditChange ser chamada. |
Pipeline de execução pós-importação com script | É executada após a importação completa do ativo e a chamada da função PostEditChange. |
Definir índice da fonte de reimportação via script | É executada e informa ao pipeline qual índice de origem deve ser reimportado. Use esta função ao reimportar um ativo que pode ter mais que uma origem. Por exemplo, uma malha esquelética que tem um arquivo de origem para geometria e outro para informações de revestimento. |
Criar um pipeline personalizado usando C++
Para criar um pipeline do Interchange usando C++, crie um arquivo de cabeçalho que contenha o seguinte:
#pragma once
#include "CoreMinimal.h"
#include "InterchangePipelineBase.h"
#include "InterchangeSourceData.h"
#include "Nodes/InterchangeBaseNodeContainer.h"
#include "InterchangeMyPipeline.generated.h"
Em seguida, crie um arquivo de origem que contenha o seguinte:
#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 obter mais informações sobre como trabalhar com C++ na Unreal Engine, consulte Programação com C++.
Criar um pipeline personalizado usando Python
Para criar um novo pipeline do Interchange usando código Python, crie um novo código Python e use as configurações do projeto para adicioná-lo a Scripts de inicialização. Para obter mais informações sobre como trabalhar com código em Python na Unreal Engine, consulte Como criar códigos para o Unreal Editor usando Python.
No código de exemplo a seguir, o código Python é usado para criar um pipeline básico de importação de ativo.
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: