Das Alembic-Dateiformat (ABC) ist ein offenes Framework für den Austausch von Computergrafiken, das komplexe, animierte Szenen in einen nicht prozeduralen, anwendungsunabhängigen Satz gebakter geometrisch Ergebnisse ableitet. Mit Unreal Engine 4 (UE4) können Sie Ihre Alembic-Dateien mit dem Alembic-Importierer importieren, was Ihnen die Freiheit bietet, komplexe Animationen extern zu erstellen, sie in UE4 zu importieren und in Echtzeit zu rendern.
Sie importieren Alembic-Dateien auf ähnliche Weise wie einige andere Formen von Importinhalten in UE4.
Sie können sich auch den Unreal Engine-Livestream zu Animationsthemen ansehen, der auch den Importierer für Alembic-Dateien behandelt:
Exportieren von Alembic-Caches
So exportieren Sie einen Alembic-Cache aus Autodesk Maya:
-
Wählen Sie im Datei Menu unter Cache und Alembic-Cache je nach Bedarf Alle nach Alembic exportieren... (oder Auswahl).
-
Aktivieren Sie im Fenster Exportieren unter Erweiterte Optionen die Optionen UV schreiben und Flächensätze schreiben und klicken Sie dann auf Exportieren.
Sie müssen Flächensätze schreiben aktivieren, wenn Sie während des Imports in Unreal Engine 4 Materialien erstellen möchten, da Materialien basierend auf gefundenen Flächensatznamen erstellt werden.
Importieren von Alembic-Dateien
So importieren Sie eine Alembic-Datei in Unreal Engine 4:
-
Klicken Sie im Inhaltsbrowser auf die Schaltfläche Importieren und suchen Sie Ihre .abc-Datei.
-
Das Fenster Importoptionen Alembic-Cache wird angezeigt, in dem Sie die Methode/Optionen für den Import definieren können. Dieses Fenster zeigt den Name der Datei und den Speicherort an, von dem Sie importieren. Sie sehen auch Kontrollkästchen für die Assets in Ihrer Datei, die Sie in den Importvorgang aufnehmen oder davon ausschließen können (Sie können das Kontrollkästchen der obersten Ebene verwenden, um alle Tracks ein- oder auszuschließen).
Aktuell unterstützt Unreal Engine nur Meshs, die drei- und vierseitige Polygone enthalten. Ihre Alembic-Daten können nicht geladen werden, wenn Ihre Geometrie Polygone mit mehr als vier Seiten enthält oder wenn Ihre Geometrie aus NURBS- oder SubDiv-Flächen besteht.
Importieren als statisches Mesh
Während des Importvorgangs können Sie definieren, wie Ihre Inhalt importiert werden sollen. Standardmäßig ist der Alembic-Importtyp auf Statisches Mesh gesetzt.

Mit dem Import eines Alembic-Cache als statisches Mesh wird ein einzelner Frame, der durch den Wert Frame-Start im Abschnitt Sampling bestimmt wurde, als ein oder mehrere statische Meshs importiert. Die Alembic-Animation aus diesem Frame wird als Statisches-Mesh-Asset ohne Animation importiert. Zusätzlich sind die folgenden Einstellungen verfügbar:
Statisches-Mesh-Optionen
Einstellung | Beschreibung |
---|---|
Meshs zusammenführen | Aktivieren Sie diese Option, um statische Meshs beim Import zusammenzuführen (dies kann zu Problemen mit sich überlappenden UV-Sätzen führen). |
Matrix-Transformationen propagieren | Aktivieren Sie diese Option, um Matrix-Transformationen auf die Meshs anzuwenden, bevor diese zusammengeführt werden. (Informationen dazu finden Sie unter „Matrix-Transformationen propagieren“.) |
Lightmap-UVs generieren | Aktivieren Sie diese Option, um beim Import Lightmap-UVs zu erstellen. |
Wenn Sie eine Alembic-Datei als statisches Mesh importieren und Daten mehrere Meshs enthalten, können Sie Meshs zusammenführen auswählen, um ein einzelnes statisches Mesh in Unreal Engine zu erstellen. Wenn Sie diese Option deaktivieren, wird jedes Mesh innerhalb Ihrer Alembic-Datei stattdessen als individuelles statisches Mesh in UE4 importiert.
Matrix-Transformationen propagieren
Überlegen Sie bei der Aktivierung von Meshs zusammenführen, ob Sie vor dem Zusammenführen der Meshs Matrix-Transformationen propagieren möchten oder nicht. Damit werden die Transformationsdaten aus der Alembic-Datei beim Zusammenführen an die Meshs propagiert, damit sie ihre Transformationsdaten behalten.
Betrachten Sie die unten erstellte Beispielszene, die wir als Alembic-Cache exportieren.

Wenn wir die Datei als statisches Mesh mit Meshs zusammenführen und Matrix-Transformationen propagieren in UE4 importieren, erhalten wir Folgendes:

Wenn wir Meshs zusammenführen, aber die Option Matrix-Transformationen propagieren deaktivieren, erhalten wir Folgendes:

Jedes Mesh wird am Ursprung 0,0,0 zusammengeführt.
Sampling-Optionen

Einstellung | Beschreibung |
---|---|
Samplingtyp | Die Art des Sampling, die beim Importieren der Animation durchgeführt wird.
|
Frame-Start | Startindex, an dem das Sampling der Animation gestartet werden soll |
Frame-Ende | Endindex, bei dem das Sampling der Animation beendet werden soll |
Leere Frames zu Beginn der Alembic-Sequenz überspringen | Leere Frames (Prä-Roll-Frames), in denen es keine Geometrie gibt, werden übersprungen und der Import beginnt mit dem Frame, der die tatsächlichen Daten enthält. |
Optionen zur Normalen-Berechnung

Einstellung | Beschreibung |
---|---|
Eine Glättungsgruppe pro Objekt erzwingen | Aktivieren Sie diese Option, um die Glättung von Normalen für jedes einzelne Objekt zu erzwingen, statt Glättungsgruppen zu berechnen. |
Schwellenwert harter Kantenwinkel | Schwellenwert, der bestimmt, ob ein Winkel zwischen zwei Normalen als hart angesehen werden sollte (näher an 0 bedeutet glatter). |
Normalen neu berechnen | Aktivieren Sie diese Option, um eine Neuberechnung von Normalen zu erzwingen. |
Entartete Dreiecke ignorieren | Aktivieren Sie diese Option, um entartete Dreiecke bei der Berechnung von Tangenten und Normalen zu ignorieren. |
So werden Normalen berechnet
Im Folgenden finden Sie eine grobe Übersicht darüber, wie Normalen basierend auf dem Importtyp berechnet werden und wie Normalen in der zu importierenden Datei verwendet werden.
- Beim Importieren einer Datei, die Normalen für alle Frames enthält:
-
Für statische Meshs/Geometrie-Cache: Die Engine verwendet bestehende Normalen.
-
Für Skelett-Meshs: Die Normalen aus dem ersten Frame bestimmen Glättungsgruppen, mit denen Normalen für den durchschnittlichen Frame sowie alle Basen und Morph-Ziele berechnet werden (das erfolgt in allen Fällen).
-
- Beim Importieren einer Datei, die nur für die ersten Frames Normalen enthält:
-
Für statische Meshs: Bei Verwendung von Frame 0 nutzt die Engine bestehende Normalen. Ansonsten berechnet sie Glättungsgruppen und Normalen für den angeforderten Frame.
-
Für Geometrie-Cache: Die Engine berechnet Glättungsgruppen und sich daraus ergebende Normalen für alle Frames.
-
- Beim Importieren einer Datei, die keine Normalen enthält:
- Die Engine berechnet nicht-geglättete Normalen, generiert Glättungsgruppen entsprechend der berechneten Normalen und berechnet Normalen innerhalb der Glättungsgruppen neu.
Wenn Sie die Neuberechnung von Normalen aktivieren, wird der oben angegebene Pfad verwendet (für keine Normalen).
Wenn Sie den Import als Skelett-Mesh durchführen und Ihre Animation ein großes Normalen-Delta aufweist, erhalten Sie möglicherweise keine korrekt aussehenden Normalen. Das ist ein bekanntes Problem, das durch die Art und Weise verursacht wird, wie Morph-Ziele die Flächen- und Scheitelpunktnormalen verändern können. Als provisorische Lösung können Sie dieses Problem umgehen, indem Sie die (experimentelle) Skin-Cache-Funktion nutzen.
Sie können diese Funktion in Ihren Projekteinstellungen aktivieren, indem Sie die Optionen Skin-Cache-Berechnung unterstützen und Neuberechnung der Tangenten für alle geskinnten Meshs erzwingen verwenden.
Dies sollte die Shader neu kompilieren, wenn Sie den Editor das nächste Mal starten. Wenn Sie das Skelett-Mesh-Asset öffnen, sollten Sie für jedes Material bzw. jeden Abschnitt die Option Tangenten neu berechnen aktivieren können.
So werden Glättungsgruppen berechnet
Falls die importierten Meshs harte Kanten haben, sollten Sie sich evtl. mit „Schwellenwert harter Kantenwinkel“ beschäftigen und damit, wie die Glättungsgruppenberechnung ausgeführt wird.


Zur Berechnung von Glättungsgruppen werden zuerst die Scheitelpunkt- und Flächennormalen berechnet. Damit werden dann alle Flächen betrachtet, die mit einer bestimmten Fläche verbunden sind. Durch die Berechnung des Winkels zwischen den Normalen können wir anschließend bestimmen, ob eine Kante hart oder weich ist (ähnlich wie mit dem Werkzeug „Weiche/Harte Kanten“ in Maya). Im folgenden Beispiel würden wir das Bild links als weiche Kante und das rechte Bild als harte Kante betrachten. Der Grund dafür ist, dass der Winkel zwischen den beiden Normalen im linken Bild kleiner ist als der Winkel der beiden Normalen im rechten Bild.

Da wir das wissen, verwenden wir ein Skalarprodukt, um einen Bereich von 0 bis 1 als Schwellenwert zu generieren, um zu definieren, wann eine Kante hart oder weich sein soll. Zum Beispiel würde ein Wert näher an 1 bedeuten, dass der Winkel größer ist, was zu einer harten Kante führt, während ein Wert näher bei 0 bedeutet, dass es eine weiche Kante ist. Diese Informationen werden dann verwendet, um Gruppen von Normalen zu erzeugen, die weiche Kanten gemeinsam haben. Für jede dieser Gruppen glätten wir die Normalen über den Flächen, wodurch glatte Flächen entstehen.
Das Erzwingen einer Glättungsgruppe pro Objekt macht jedes einzelne Objekt komplett glatt (nur weiche Kanten).
Als Geometrie-Cache importieren
Durch den Import als Geometrie-Cache wird eine neue Art Animationsasset erstellt, das die Wiedergabe von Sequenzen mit variierenden Scheitelpunkten ermöglicht.

Die importierte Alembic-Animation wird als Flipbook aus Frames abgespielt und die Performance skaliert mit der Komplexität Ihres Mesh.
Der Geometrie-Cache beinhaltet dieselben Einstellungen für Sampling und Normalenberechnung wie die Importoption Statisches Mesh, bietet aber zusätzliche Unterstützung für Materialien und Bewegungsvektoren. Diese Importmethode kann Materialien basierend auf gefundenen Flächensatz-Namen erstellen (das funktioniert nicht ohne in Ihrer externen Anwendung definierte und als Teil des Alembic-Cache exportierte Flächensätze). Der Import von Bewegungsvektoren wird durch Ändern der Option Bewegungsvektoren in der Kategorie „Geometrie-Cache“ des Importeurs aktiviert:

Klicken Sie auf den kleinen Pfeil unten im Abschnitt „Geometrie-Cache“, um diese Optionen anzuzeigen.
Einstellung | Beschreibung |
---|---|
Keine Bewegungsvektoren | Im Geometrie-Cache sind keine Bewegungsvektoren vorhanden. Dies ist standardmäßig aktiviert. Mit dieser Option erzeugen Sie keine Bewegungsunschärfe. |
ABC-Geschwindigkeiten als Bewegungsvektoren importieren | Importiert die Geschwindigkeiten aus der Alembic-Datei und wandelt sie in Bewegungsvektoren um. Das Speichern der Bewegungsvektoren auf der Festplatte erhöht die Dateigröße. Wenn Ihr Geometrie-Cache eine sich ändernde Topologie enthält (die Anzahl der Scheitelpunkte ändert sich während der Animation), achten Sie darauf, die Scheitelpunktgeschwindigkeit aus Ihrer 3D-Anwendung zu exportieren, und nutzen Sie diese Option. |
Bewegungsvektoren beim Import berechnen | Erzwingt die Berechnung von Bewegungsvektoren beim Import. Das Speichern der Bewegungsvektoren auf der Festplatte erhöht die Dateigröße. Wenn Ihr Geometrie-Cache keine sich ändernde Topologie enthalten (die Anzahl der Scheitelpunkte ändert sich während der Animation), verwenden Sie diese Option. |
Schließen Sie Bewegungsvektoren ein, um die Scheitelpunktgeschwindigkeiten Ihres Modells zu berechnen und damit die Bewegungsunschärfe zu berechnen.
Aktuell unterstützen Geometrie-Cache-Assets keinen Nähepuffer, der für die Tesselierungseinrichtung erforderlich ist. Als provisorische Lösung können Sie eine Animation als Skelett-Mesh mit Morph-Zielen importieren (was eine stärker komprimierte Importmethode ist), da dies die Tesselierung unterstützt.
Importieren als Skelett
Diese Methode importiert die Alembic-Datei als Skelett-Mesh, das Basisposen als Morph-Ziele enthält und eine Überblendung zwischen diesen durchführt, um den korrekten Animationsframe zu erhalten. Der Import als Skelett-Mesh ist der effizienteste Weg, eine Alembic-Animation wiederzugeben, solange sich die Anzahl der Scheitelpunkte nicht ändert.

Beim Import wird Ihre Animationssequenz mithilfe eines „Principal Component Analysis (PCA)“-Schemas komprimiert, bei dem gängige Posen (Basen) extrahiert und gewichtet werden, um die ursprüngliche Animation während der Wiedergabe zu erstellen. Beim Import als Skelett-Mesh können Sie neben den Optionen Sample, Normalenberechnung und Materialien erstellen auch den Prozentsatz (oder die feste Anzahl der verwendeten Basen) definieren, um die Komprimierungsstufe anzupassen.
Komprimierungsoptionen
Einstellung | Beschreibung |
---|---|
Meshs zusammenführen | Aktivieren Sie diese Option, um die einzelnen Meshs zur Komprimierung zusammenzuführen. |
Matrix-Animation baken | Aktivieren Sie diese Option, um reine Matrix-Animationen als Scheitelpunktanimationen zu baken. |
Basisberechnungstyp | Legt fest, wie die endgültige Anzahl Basen berechnet wird, die als Morph-Ziele gespeichert werden.
|
Prozentsatz (max. Anzahl) der Gesamtbasen | Diese Option generiert den eingestellten Prozentsatz oder die feste Anzahl Basen als Morph-Ziele. Dies ist einer der wichtigeren Aspekte für die Komprimierungsstufe. Die Eingabe einer geringen Anzahl Basen komprimiert die Animation stärker, aber feine Animationsdetails können verloren gehen. Im Gegenzug führt die Eingabe einer hohen Anzahl Basen zu einer geringeren Komprimierung, aber es bleiben mehr Animationsdetail erhalten. |
Minimaler Prozentsatz des Scheitelpunkt-Einflusses | Legt den Mindestprozentsatz beeinflusster Scheitelpunkte fest, der erforderlich ist, damit ein Morph-Ziel gültig ist. Mit dieser Einstellung können Sie basierend auf dem definierten Einflussprozentsatz festlegen, wann eine Basis oder ein Morph-Ziel importiert wird. Zum Beispiel, wenn wir ein Modell mit 1000 haben. |
Animationen, die eine erhebliche Scheitelpunktverschiebung gegenüber dem Ursprung enthalten, können zu Verzerrungen im Skelett-Mesh führen. Sie können das abmildern, indem Sie für „Basisberechnungstyp“ die Option „Keine Komprimierung“ auswählen und „Meshs zusammenführen“ aktivieren.