O formato de arquivo do Alembic (ABC) é um Interchange Framework aberto para computação gráfica que destila cenas animadas complexas em um conjunto de resultados geométricos incorporados não procedurais e independentes do aplicativo. A Unreal Engine 4 (UE4) permite importar arquivos do Alembic por meio do Alembic Importer, que dá a liberdade de criar animações complexas externamente, trazê-las para a UE4 e renderizá-las em tempo real.
Importe arquivos do Alembic de maneira semelhante a várias outras formas de importação de conteúdo na UE4.
Você também pode assistir à transmissão ao vivo da Unreal Engine sobre tópicos de animação, incluindo o Alembic File Importer:
Como exportar caches do Alembic
Para exportar um cache Alembic no Autodesk Maya:
-
Em File Menu, no Cache e Cache Alembic, selecione Export All to Alembic... (ou Selection) de acordo com suas necessidades.
-
Na janela Export, em Advanced Options, habilite as opções UV Write e Write Face Sets e clique em Export.
Você precisará habilitar Write Face Sets se quiser criar materiais durante a importação para a Unreal Engine 4, pois são criados com base nos nomes de conjuntos de faces encontrados.
Como importar arquivos do Alembic
Para importar um arquivo do Alembic para a Unreal Engine 4:
-
Em Content Browser, clique no botão Import e aponte para seu arquivo .abc.

-
Aparecerá a janela Alembic Cache Import Options, na qual você poderá definir o método/as opções de importação. Essa janela exibe o nome do arquivo e a posição da qual você está importando. Você também verá opções de caixas de seleção para os ativos em seu arquivo que podem ser incluídos ou excluídos do processo de importação (você também poderá usar a caixa de seleção de nível superior para incluir ou excluir todas as faixas).
No momento, a Unreal Engine é compatível apenas com malhas que contêm polígonos de três e de quatro lados. Os dados do Alembic não serão carregados se a geometria contiver polígonos com mais de quatro lados ou for feita de superfícies NURBS ou SubDiv.
Importe como malha estática
Durante o processo de importação, você pode definir como importar o conteúdo. Por padrão, Alembic Import Type está definido como Static Mesh.
Na importação de um cache do Alembic como uma malha estática, será importado um único quadro, especificado pelo valor Frame Start no segmento Sampling, como uma ou várias malhas estáticas. A animação do Alembic desse quadro será importada como um ativo de malha estática sem animação. As seguintes configurações também estão disponíveis:
Opções de malha estática
| Ambiente | Descrição |
|---|---|
| Merge Meshes | Habilite esta opção para mesclar as malhas estáticas na importação (isso pode causar problemas com a sobreposição de conjuntos de UV). |
| Propagate Matrix Transformations | Habilite esta opção para aplicar transformações de matriz às malhas antes de mesclá-las. (Consulte Propagate Matrix Transformations.) |
| Generate Lightmap UVs | Habilite para criar UVs do mapa de iluminação na importação. |
Ao importar um arquivo do Alembic como uma malha estática, se os dados tiverem várias malhas, você poderá escolher Merge Meshes para criar uma única malha estática dentro da Unreal Engine. Se você desabilitar essa opção, cada malha do arquivo do Alembic será importada para a UE4 como uma malha estática individual.
Propague transformações de matriz
Ao habilitar Merge Meshes, considere se deve ou não realizar Propagate Matrix Transformations antes de mesclar as malhas. Isso usará os dados de transformação contidos no arquivo do Alembic e os propagará para as malhas após a combinação, assim elas preservarão dos dados de sua transformação.
Considere a cena de amostra criada abaixo, que exportamos como um cache do Alembic.
Quando importamos o arquivo para a UE4 como uma malha Estática com Merge Meshes e Propagate Matrix Transformations, obtemos o seguinte:
Se marcarmos Merge Meshes, mas desmarcarmos a opção Propagate Matrix Transformations, obteremos o seguinte:
Todas as malhas estão mescladas na origem 0,0,0.
Opções de amostragem
| Ambiente | Descrição |
|---|---|
| Sampling Type | O tipo de amostragem realizada durante a importação da animação.
|
| Frame Start | Índice inicial a partir do qual começa a amostragem da animação. |
| Frame End | Índice final para interromper a amostragem da animação. |
| Skip Empty Frames at Start of Alembic Sequence | Pule quadros vazios (pré-roll) em que não há geometria e comece a importar no quadro que contém dados reais. |
Opções de cálculo de normais
| Ambiente | Descrição |
|---|---|
| Force One Smoothing Group Per Object | Habilite a opção para forçar normais de suave para cada objeto individual em vez de calcular grupos de suavização. |
| Hard Edge Angle Threshold | Valor-limite que determina se um ângulo entre duas normais deve ser considerado rígido (mais próximo de 0 significa mais suave). |
| Recompute Normals | Habilite para forçar novo cálculo de normais. |
| Ignore Degenerate Triangles | Habilite esta opção para ignorar triângulos degenerados ao calcular tangentes e normais. |
Como calcular normais
Confira a seguir uma visão geral de como as normais são calculadas com base no Import Type e como são usadas no arquivo a ser importado.
- When importing a file that contains normals for all frames:
-
For Static Meshes / Geometry Cache: a engine usa normais existentes.
-
For Skeletal Meshes: as normais do primeiro quadro determinam grupos de suavização, que são usados para calcular normais para o quadro médio e todas as bases e destinos de metamorfose (fazemos isso em todos os casos).
-
- When importing a file that contains normals for only the first frames:
-
For Static Meshes: se estiver usando o quadro 0, a engine usará normais existentes. Caso contrário, serão calculados grupos de suavização e normais para o quadro solicitado.
-
For Geometry Cache: a engine calcula grupos de suavização e normais resultantes para todos os quadros.
-
- When importing a file that contains no normals:
- A engine calcula normais não suaves, gera grupos de suavização de acordo com as normais calculadas e recalcula as normais dentro dos grupos de suavização.
Quando a opção "Recompute Normals" for habilitada, o caminho especificado acima será usado (no caso de normais).
Ao importar como uma Skeletal Mesh, se a animação tiver um delta de normal grande, você poderá ter problemas para obter normais com a aparência correta. Esse é um problema conhecido que é causado pela forma como os destinos de metamorfose podem alterar as normais de face e vértice. Como solução, você pode ignorar esse problema usando a funcionalidade (experimental) de revestimento de cache.
Habilite essa funcionalidade em Project Settings usando as opções Support Compute Skincache e Force all skinned meshes to recompute tangents.
Isso deve recompilar os shaders na próxima vez que você inicializar o editor. Ao abrir o ativo da malha esquelética, você poderá habilitar a opção Recompute Tangent para cada material ou segmento.
Como os grupos de suavização são calculados
Se houver bordas nítidas nas malhas importadas, você pode conferir o Hard Edge Angle Threshold e ver como o cálculo do grupo de suavização é realizado.


Para calcular os grupos de suavização, primeiro são calculadas as normais de vértice e face. Em seguida, elas são usadas para verificar todas as faces que se conectam a uma face específica. Ao calcular o ângulo entre as normais, podemos determinar se uma borda é rígida ou suave (semelhante ao uso da ferramenta Soft/Hard Edges no Maya). Abaixo, a imagem à esquerda seria considerada uma borda suave, e a imagem à direita uma borda rígida. Isso ocorre porque o ângulo entre as duas normais na imagem à esquerda é menor do que o ângulo das duas normais na imagem à direita.
Sabendo disso, usamos um produto escalar para gerar um intervalo de 0 a 1 como limite para definir quando uma borda deve ser rígida ou suave. Por exemplo, um valor mais próximo de 1 significa que o ângulo é maior, resultando em uma borda rígida, já valores mais perto de 0 significam uma borda suave. Essas informações são usadas para gerar grupos de normais que compartilham bordas suaves. Para cada um desses grupos, suavizamos as normais nas faces, criando faces suaves.
Forçar um grupo de suavização por objeto torna cada objeto individual completamente suave (com bordas suaves).
Importe como cache de geometria
Importar como um Geometry Cache cria um novo tipo de ativo de animação que permite a reprodução de sequências que variam conforme o vértice.
A animação do Alembic importada será reproduzida como um folioscópio de quadros, e o desempenho será dimensionado de acordo com a complexidade da malha.
O cache de geometria inclui as mesmas configurações Sampling e Normal Calculation da opção de importação Static Mesh, com suporte adicional para materiais e vetores de movimento. Esse método de importação criar materiais de acordo com os nomes do Face Set encontrado (isso não funcionará sem "Face Sets" definidos no aplicativo externo e exportados como parte do cache do Alembic). Para habilitar a importação de vetores de movimento, altere a opção Motion Vectors na categoria do cache de geometria do importador:
Clique na pequena seta para baixo na parte inferior do segmento da seção do cache de geometria para ver estas opções.
| Ambiente | Descrição |
|---|---|
| No Motion Vectors | Nenhum vetor de movimento estará presente no cache de geometria. Habilitada por padrão. Se você escolher esta opção, não haverá desfoque de movimento. |
| Import Abc Velocities as Motion Vectors | Importa as velocidades do arquivo do Alembic e as converte em vetores de movimento. Armazenar vetores de movimento no disco aumentará o tamanho do arquivo. Se o cache de geometria tiver uma topologia variável (o número de vértices muda durante a animação), exporte as velocidades de vértice do aplicativo 3D e use esta opção. |
| Calculate Motion Vectors During Import | Força o cálculo de vetores de movimento durante a importação. Armazenar vetores de movimento no disco aumentará o tamanho do arquivo. Se o cache de geometria não tiver topologia variável (o número de vértices muda durante a animação), use essa opção. |
Inclua vetores de movimento para calcular as velocidades dos vértice do modelo e use-os para calcular o desfoque de movimento.
No momento, os ativos do cache de geometria não são compatíveis com um buffer de adjacência, que é necessário para a configuração da tesselação. Como alternativa, você pode importar uma animação como um Skeleton Mesh com destinos de metamorfose (que é uma forma mais compacta de importação), possibilitando a tesselação.
Importe como esqueleto
Esse método importa o arquivo do Alembic como uma malha esquelética com poses-base como destinos de metamorfose e as mescla para obter o quadro de animação correto. Importar como uma malha esquelética é a maneira mais eficiente de reproduzir uma animação do Alembic, desde que a contagem de vértices não mude.
Durante a importação, a sequência de animação será compactada usando um esquema de análise de componente principal (PCA), no qual poses comuns (bases) são extraídas e ponderadas para compor a animação original durante o tempo de reprodução. Ao importar como uma malha esquelética, além das opções Sample, Normal Calculation e Create Materials, você também pode definir a porcentagem (ou número fixo de bases usadas) para ajustar o nível de malha e compactação.
Opções de compactação
| Ambiente | Descrição |
|---|---|
| Merge Meshes | Habilite para mesclar as malhas individuais para fins de compactação. |
| Bake Matrix Animation | Habilite para incorporar animação exclusiva de matriz como animação de vértice. |
| Base Calculation Type | Determina como o número final de bases armazenadas como destinos de metamorfose é calculado.
|
| Percentage (Max Number) of Total Bases | Gera a porcentagem ou o número fixo de bases como destinos de metamorfose. Esse é um dos aspectos mais importantes do nível de compactação. Inserir um número baixo de bases compacta mais a animação, mas os detalhes sutis dela podem ser perdidos. Por outro lado, inserir um número alto de bases resulta em menos compactação, mas retém mais detalhes da animação. |
| Minimum Number Of Vertex Influence Percentage | Define a porcentagem mínima de vértices influenciados necessária para que um destino de metamorfose seja válido. Com essa configuração, você determina quando uma base ou um destino de metamorfose é importado com base na porcentagem de influência definida. Por exemplo, se tivermos um modelo com 1000 |
Animações com deslocamento de vértice significativo em relação à origem podem distorcer a malha esquelética. Para mitigar isso, escolha a opção "No Compression" em "Base Calculation Type" e habilite "Merge Meshes".