Sustainability of Digital Formats: Planning for Library of Congress Collections

Introduction | Sustainability Factors | Content Categories | Format Descriptions | Contact
Format Description Categories >> Browse Alphabetical List

Autodesk Alembic

>> Back
Table of Contents
Format Description Properties Explanation of format description terms

Identification and description Explanation of format description terms

Full name Autodesk Alembic
Description

Alembic (ABC) is an open computer graphics framework, used for distilling complex, animated scenes into non-procedural, application-independent set of baked geometric results. ABC is focused on efficiently storing the computed results of complex geometries, it is NOT concerned with storing dependency graphs or tools used to create the results. ABC will store animated vertex positions resulting from animation and simulation processes but will not store the rigging computations. ABC is storing and sharing scene data, not creating.

Industrial Light & Magic (ILM) and Sony Imageworks announced the co-developed open-source project ABC in July 2010, with ABC 1.0 released August 2011. ABC is frequently updated, for the most current version see GitHub’s Alembic release page.

Users can find information about ABC at its official website, alembic.io, including a brief introduction to the format, links for news and updates, GitHub code releases, and format documentation (currently this links to an older version, ABC 1.7.0). GitHub users are encouraged to use the Google Groups Alembic Discussion Group for help with the use and design of ABC libraries and projects. Google Code Archive, which hosts read-only public project data, contains more detailed information about the ABC format.

Structure of ABC

ABC files are composed of several layers of libraries of hierarchically related data, each building extensively on the layer below it. The lowest layer library is an abstract interface layer called AbcCoreAbstract which all other layers are built.

  • alembic.AbcCoreAbstract: library that describes and specifies the interfaces, concepts like Objects and Properties, that the storage layer has to implement. ABC’s notion of time is defined in this layer.
  • alembic.Abc: human-friendly data-manipulation library that provides object-based wrappers around the AbcCoreAbstract layer.
  • alembic.AbcCollection
  • alembic.AbcGeom: library building atop the Abc layer, intending to be the primary layer for dealing with geometric interpretations data, i.e. Transform, Points, Curves, PolyMesh, SubD, FaceSet, NuPatch, Camera, and Light.
  • alembic.AbcMaterial: library that sits above Abc, is not dependent on AbcGeom, provides schemas and object types to represent materials and bindings. AbcMaterial does not define shading code, conventions, or behavior, its designed for the transfer of material information between applications.
  • alembic.Util

ABC does not have a concept of frames, instead ABC works purely with time and values that are sampled over time, using the classes TimeSampling and TimeSamplingType.

ABC stores samples of scene data using a parent/child hierarchy, the top of the hierarchy being Archive, which can be treated like an Object. Beneath Archive can many child objects, which each can be a parent to any number of other objects, and so on.

ABC Class Container Hierarchy:

  • ABC Archive: the actual file on a disk. It is the top-level container with all the scene data. Archives contains Objects.
  • ABC Object: the main unit of hierarchy, they do not contain data directly, but provide structure. ABC Objects are the primary unit of encapsulation. Objects contain Properties.
  • ABC Properties: stores Samples.
    • Simple: holds samples (actual data), can be either Scalar or Array.
    • Compound: main type of container, used to hold Properties.
  • ABC Samples: container composing raw data and a time into a single entity.

Uses of ABC

The ABC file format is used for exchanging 3D animation data between different platform and applications, any app (supporting ABC) can write out 3D information in the ABC format which then can be read by any other app (supporting ABC). ABC is used to store 3D geometry in a very efficient format due to its small file size that is quick to read and unpack. ABC also allows users to load just the frames needed or wanted instead of the entire database, i.e., loading a robot character’s head instead of the whole robot character.

Production phase Middle to Final state. ABC format is a framework for storing and sharing scene data. Files are highly portable and application independent so they can be shared, processed, and played back by content creation applications.
Relationship to other formats
    Requires EXR, OpenEXR. As stated on GitHub Alembic ReadMe.md, OpenEXR (for Imath) is a required dependency to build Alembic (ABC).

Local use Explanation of format description terms

LC experience or existing holdings None.
LC preference See the Recommended Formats Statement for the Library of Congress format preferences for Design and 3D formats and moving image works.

Sustainability factors Explanation of format description terms

Disclosure

ABC is open-source, industry standard interchange format for animation graphics files. Co-developed by Industrial Light & Magic (ILM) and Sony Pictures Imageworks in 2010.

    Documentation

Current documentation ABC 1.7.0 is managed through alembic.io, later releases publicly accessible through GitHub repository.

Adoption

Since Alembic software debuted in 2010, Industrial Light & Magic (ILM) and Sony Pictures Imageworks have integrated the technology into their production pipelines. ILM notably using the software for their work on the 2012 blockbuster The Avengers and Imageworks on the 2012 worldwide hits Men in Black 3 and The Amazing Spider-Man.

Since Alembic's 1.0 release, solution providers such as Autodesk and Foundry have added Alembic support in their product lines. Software plugin provider, Exocortex, has also introduced a suite of Alembic based plugins for all of Autodesk's major content creation tools.

See list of Tools and Plugins that support Alembic.

    Licensing and patents

No known license or patent concerns for generation and use of the format.

Transparency  
Self-documentation

ABC objects and properties have metadata allowing users to specify information that does not fit within the existing framework, i.e., property may have name “mass” on an object with metadata defining units as kilograms. As of ABC version 0.9, metadata does not have any standardized entries.

The MetaData class is an unordered, unique dictionary of strings describing protocols for objects and interpretations for properties.

External dependencies ABC requiresCMake (3.13+), C++ Complier that supports C++11, Imath 3 or OpenEXR (2.2.0+) before files can be built.
Technical protection considerations

None. Comments welcome.


Quality and functionality factors Explanation of format description terms

Other
3D Model Geometry

ABC files supports common geometric representations including: polygon meshes subdivision surface, parametric curves, NURBS patches, and particles.

3D Model Appearance

Materials are supported using a module that provide schemas and object types for representing materials and material bindings, it also defines conventions and utilities for binding and resolving material assignments and overrides.

3D Model Scene

ABC files support the import and export of scene, camera, and light data expressed via Geom and Material classes.

3D Model Animation

ABC files distill animated scenes into application-independent files with baked geometric results that can be fully re-imported into a range of supporting software. ABC animation is typically embedded using a point cache, which save dynamic data after its been calculated. Exported ABC animation is saved to disk using frames-per-second (FPS).


File type signifiers and format identifiers Explanation of format description terms

Tag Value Note
Filename extension abc
See https://en.wikipedia.org/wiki/Alembic_(computer_graphics).
Pronom PUID See note.  No PRONOM entry as of April 2023.
Wikidata Title ID Q61075387
Software framework for storing and sharing scenes. See https://www.wikidata.org/wiki/Q61075387.
Wikidata Title ID Q795136
File format. See https://www.wikidata.org/wiki/Q795136.

Notes Explanation of format description terms

General

Ginger Bill, a programmer and YouTube gaming demonstrator, stated in his article Reverse Engineering Alembic, “Through my journey into ‘discovering’ the Alembic format, I found out that Alembic is not actually a file format but masquerades as one. It is in fact two file formats with different memory layouts which can be determined based on the magic file signature: HDF5 & Ogawa.”

History

July 2010, at the ACM SIGGRAPH conference visual effects houses Industrial Light & Magic (ILM) and Sony Pictures Imageworks announced a co-developed open-source project titled Alembic. Alembic 1.0 was released on August 8, 2011. It’s designed to handle massive animation data sets often required in high-end visual effects and animation, which are routinely developed and produced by companies. The studios each saw the need for a tool like Alembic, something that would fit within existing pipelines and allow for customization at the facility level without impeding the ability to share work.

The companies joined forces when it became apparent that they were independently developing software designed to solve, a problem universally faced by the visual effects and animation production community: how to easily share complex animated scenes across a variety of disciplines and facilities regardless of what software was being used. Both studios have made strides with open-source software and recognize the importance of such initiatives, ILM with the industry standard OpenEXR format and Imageworks with OSL, Open Color I/O, Maya Reticle, Field3D, Scala Migrations and the newly release PyP.


Format specifications Explanation of format description terms


Useful references

URLs


Last Updated: 03/04/2024