El formato de archivo Alembic (ABC) es un marco abierto de intercambio de computación gráfica que condensa escenas animadas complejas en un conjunto de resultados geométricos baked que no depende de la aplicación ni del procedimiento. Unreal Engine 4 (UE4) permite importar tus archivos de Alembic a través del importador de Alembic, que te da la libertad de crear animaciones complejas de forma externa, luego llevarlas a UE4 y renderizar en tiempo real.
Importa archivos de Alembic de forma similar a otras formas de importación de contenido en UE4.
También puedes ver la transmisión en directo de Unreal Engine sobre temas de animación, que incluye el importador de archivos de Alembic:
Exportación de cachés de Alembic
Para exportar una caché de Alembic desde Autodesk Maya:
-
En el menú File dentro de Cache y Alembic Cache, selecciona Export All to Alembic... (o Selection) según tus necesidades.
-
En la ventana Export , dentro de Advanced Options, activa las opciones UV Write y Write Face Sets y haz clic en Export.
Tendrás que activar Write Face Sets si quieres crear materiales durante la importación a Unreal Engine 4, ya que los materiales se crean en función de los nombres de conjuntos de caras encontrados.
Importación de archivos de Alembic
Para importar un archivo de Alembic en Unreal Engine 4:
-
En el explorador de contenido, haz clic en el botón Importar y localiza el archivo .abc.

-
Aparecerá la ventana Alembic Cache Import Options, donde puedes definir el método y las opciones de importación. Esta ventana muestra el nombre del archivo y la ubicación desde la que estás importando. También verás las casilla de verificación de los recursos de tu archivo que puedes incluir o excluir del proceso de importación (puedes usar la casilla de la parte superior para incluir o excluir todas las pistas).
Actualmente, Unreal Engine solo es compatible con mallas que contengan polígonos de tres y cuatro lados. Los datos de Alembic no se cargarán si tu geometría contiene polígonos con más de cuatro lados o si está hecha a partir de superficies NURBS o SubDiv.
Importación como malla estática
Durante el proceso de importación, puedes definir cómo importar tu contenido. Por defecto, Alembic Import Type está configurado como *malla estática.
Al importar un caché de Alembic como malla estática , se importará un único fotograma, especificado por el valor Frame Start en la sección Sampling, como una o varias mallas estáticas. La animación de Alembic de ese fotograma se importará como recurso de malla estática y sin animación. También están disponibles los siguientes ajustes:
Opciones de malla estática
| Ajuste | Descripción |
|---|---|
| Merge Meshes | Habilita esta opción para fusionar las mallas estáticas durante la importación (esto puede causar problemas con los conjuntos de UV solapados). |
| Propagate Matrix Transformations | Habilita esta opción para aplicar transformaciones de matriz a las mallas antes de fusionarlas. (Consulta «Propagación de transformaciones de matrices»). |
| Generate Lightmap UVs | Habilita esta opción para crear UV de mapas de luz durante la importación. |
Al importar un archivo de Alembic como malla estática, si tus datos contienen varias mallas, puedes elegir Merge Meshes para crear una única malla estática dentro de Unreal Engine. Si desactivas esta opción, cada malla del archivo de Alembic se importará a UE4 como una malla estática individual.
Propagación de transformaciones de matrices
Si habilitas Merge Meshes, ten en cuenta si quieres propagar o no las transformaciones de matrices antes de fusionar las mallas. Esto tomará los datos de transformación contenidos en el archivo de Alembic y los propagará a las mallas al fusionarse para que conserven sus datos de transformación.
Imagina la escena de muestra a continuación y que exportamos como caché de Alembic.
Al importar el archivo a UE4 como una malla estática con Merge Meshes y Propagate Matrix Transformations, obtenemos lo siguiente:
Si fusionamos mallas con Merge Meshes pero desmarcamos la casilla Propagate Matrix Transformations, obtendremos lo siguiente:
Todas las mallas se fusionan en el origen 0,0,0.
Opciones de muestreo
| Ajuste | Descripción |
|---|---|
| Sampling Type | El tipo de muestreo realizado al importar la animación.
|
| Frame Start | Índice inicial desde el que empezar a muestrear la animación. |
| Frame End | Índice final en el que dejar de muestrear la animación. |
| Skip Empty Frames at Start of Alembic Sequence | Omite los fotogramas vacíos (antes de la reproducción) en los que no hay geometría y empieza a importar en el fotograma que contiene los datos reales. |
Opciones de cálculo de normales
| Ajuste | Descripción |
|---|---|
| Force One Smoothing Group Per Object | Habilita esta opción para forzar normales suaves para cada objeto individual en lugar de calcular grupos de suavizado. |
| Hard Edge Angle Threshold | Valor de umbral que determina si un ángulo entre dos normales debe considerarse duro (cuanto más cerca de 0, más suave). |
| Recompute Normals | Habilita esta opción para forzar el recálculo de las normales. |
| Ignore Degenerate Triangles | Habilita esta opción para ignorar los triángulos degenerados al calcular tangentes y normales. |
Cómo se calculan las normales
A continuación, te explicamos cómo se calculan las normales en función del tipo de importación y cómo se usan dentro del archivo que se va a importar.
- Al importar un archivo que contenga normales para todos los fotogramas:
-
Para mallas estáticas/caché de geometría: el motor usa las normales existentes.
-
Para mallas esqueléticas: las normales del primer fotograma determinan grupos de suavizado, que se usan para calcular las normales para el fotograma medio y todas las bases y Morph Targets (lo hacemos en todos los casos).
-
- Al importar un archivo que contenga normales solo para los primeros fotogramas:
-
Para mallas estáticas: si se usa el fotograma 0, el motor usará las normales existentes. En caso contrario, calcula los grupos de suavizado y las normales para el fotograma solicitado.
-
Para caché de geometría: el motor calcula los grupos de suavizado y las normales resultantes para todos los fotogramas.
-
- Al importar un archivo que no contenga normales:
- El motor calcula las normales que no son de suavizado, genera grupos de suavizado en función de las normales calculadas y recalcula las normales dentro de los grupos de suavizado.
Si se habilita la opción Recompute Normals , se usa la ruta especificada arriba (para no usar normales).
Al importar como malla esquelética, si tu animación tiene un delta normal grande, es posible que tengas problemas para conseguir normales con el aspecto correcto. Se trata de un problema conocido causado por la forma en que los Morph Targets pueden alterar las normales de las caras y los vértices. Como solución alternativa, puedes evitar este problema usando la función de caché de aspecto (en fase experimental).
Puedes habilitar esta función en Project Settings con las opciones Support Compute Skincache y Force all skinned meshes to recompute tangents.
Esto debería recompilar los sombreadores la próxima vez que inicies el editor. Al abrir el recurso de malla esquelética, deberías poder activar la opción Recompute Tangent para cada material o sección.
Cómo se calculan los grupos de suavizado
Si las mallas que importas tienen bordes duros, echa un vistazo a la opción Hard Edge Angle Threshold y cómo se calcula el grupo de suavizado.


Para calcular los grupos de suavizado, primero se calculan las normales de los vértices y las caras, que luego se usan para buscar todas las caras que se conectan a una cara concreta. Al calcular el ángulo entre las normales, podemos determinar si un borde es duro o blando (similar a la herramienta de bordes suaves/duros de Maya). Abajo, la imagen de la izquierda sería un borde blando, mientras que la de la derecha sería un borde duro. Esto se debe a que el ángulo entre las dos normales de la imagen de la izquierda es menor que el ángulo formado por las dos normales de la imagen de la derecha.
Sabiendo esto, usamos un producto escalar para generar un intervalo de 0 a 1 como umbral para definir cuándo un borde debe ser duro o blando. Por ejemplo, un valor más cercano a 1 significaría que el ángulo es mayor, lo que generaría un borde duro, mientras que un valor más cercano a 0 significaría un borde blando. A continuación, esta información se usa para generar grupos de normales que comparten bordes suaves. Para cada uno de estos grupos, suavizamos las normales de las caras para crear caras suavizadas.
Si se fuerza un grupo de suavizado por objeto, cada objeto individual se suavizará por completo (todos los bordes suavizados).
Importación como caché de geometría
Al importar como caché de geometría, se crea un nuevo tipo de recurso de animación que permite la reproducción de secuencias con varios vértices.
La animación de Alembic importada se reproducirá como un flipbook de fotogramas y el rendimiento se adaptará a la complejidad de la malla.
La caché de geometría incluye los mismos ajustes de Sampling y Normal Calculation que la opción de importación Static Mesh , aunque añade compatibilidad adicional con materiales y vectores de movimiento. Este método de importación tiene la capacidad de crear materiales de acuerdo con los nombres de conjuntos de caras encontrados (esto no funcionará sin conjuntos de caras definidos en tu aplicación externa y exportados como parte de la caché de Alembic). La importación de vectores de movimiento se habilita cambiando la opción Motion Vectors de la categoría Geometry Cache del importador:
Haz clic en la flecha hacia abajo de la parte inferior de la sección Geometry Cache para ver estas opciones.
| Ajuste | Descripción |
|---|---|
| No Motion Vectors | No habrá vectores de movimiento en la caché de geometría. Esta opción está habilitada por defecto. Si eliges esta opción, no habrá desenfoque de movimiento. |
| Import Abc Velocities as Motion Vectors | Importa las velocidades del archivo de Alembic y las convierte en vectores de movimiento. Al almacenar los vectores de movimiento en el disco, el de tamaño del archivo aumentará. Si tu caché de geometría contiene topología cambiante (el número de vértices cambia durante la animación), asegúrate de exportar las velocidades de los vértices desde tu aplicaciones 3D y usa esta opción. |
| Calculate Motion Vectors During Import | Fuerza el cálculo de los vectores de movimiento durante la importación. Al almacenar los vectores de movimiento en el disco, el de tamaño del archivo aumentará. Si tu caché de geometría no contiene topología variable (el número de vértices cambia durante la animación), usa esta opción. |
Incluye vectores de movimiento para calcular las velocidades de los vértices de tu modelo y utilízalos para calcular el desenfoque de movimiento.
Actualmente, los recursos de la caché de geometría no son compatibles con un búfer de adyacencia (necesario para la configuración de la teselación). Como solución alternativa, puedes importar una animación como una malla esquelética con Morph Targets (que es una forma de importación más comprimida), ya que esto permitirá la teselación.
Importación como un esqueleto
Este método importa el archivo de Alembic como una malla esquelética que contiene poses de base como Morph Targets y las mezcla para conseguir el fotograma de animación correcto. Importar como malla esquelética es la forma más eficiente de reproducir una animación de Alembic , siempre y cuando el recuento de vértices no cambie.
Durante la importación, tu secuencia de animación se comprimirá usando un esquema de análisis de componentes principales (PCA), en el que se extraen las poses (bases) y se ponderan para componer la animación original durante el tiempo de reproducción. Al importar como malla esquelética, además de las opción Sample, Normal Calculation* y Create Materials**, también puedes definir el porcentaje (o número fijo de bases usadas) para ajustar el nivel de compresión.
Opciones de compresión
| Ajuste | Descripción |
|---|---|
| Merge Meshes | Habilita esta opción fusionar las mallas individuales con fines de compresión. |
| Bake Matrix Animation | Habilita esta opción para hacer bake de animaciones exclusivas de matrices como animación de vértices. |
| Base Calculation Type | Determina cómo se calcula el número final de bases que se almacenan como Morph Targets.
|
| Percentage (Max Number) of Total Bases | Genera el porcentaje dado o la cantidad fija de bases como Morph Targets. Este es uno de los aspectos más importantes para el nivel de compresión. Si se introduce un número bajo de bases, la animación se comprimirá más, pero es posible que se pierdan detalles precisos de la animación. Por el contrario, si se introduce un número elevado de bases, la compresión será menor pero se conservarán más detalles de la animación. |
| Minimum Number Of Vertex Influence Percentage | Establece el porcentaje mínimo de vértices afectados necesarios para que un Morph Target sea válido. Este ajuste permite determinar cuándo se importa un objetivo base o Morph Target en función del porcentaje de influencia definido. Por ejemplo, si tenemos un modelo con 1000 |
Las animaciones que contienen un desplazamiento de vértices significativo desde el origen pueden distorsionar la malla esquelética. Puedes mitigar este problema eligiendo la opción No Compression en Base Calculation Type y activando Merge Meshes.