For user support and questions or custom builds please refer to the dedicated thread on blenderartists.org.
Firstly, this patch adds an import and an export operator to convert data between Alembic and Blender. This is pretty straightforward. The exporter creates an Alembic archive based on the Blender object(s) to be exported, the importer creates Blender objects and parents them if needed based on the content of a given Alembic archive.
For animated data streaming support, a new modifier (Mesh Sequence Cache) was added to be able to support file sequences and animated objects with a varying number of vertices/points. Reason was that it was easier to write a new modifier than refactoring the Mesh Cache modifier, but eventually it will be merged with the Mesh Cache modifier if nothing prevents that.
To be able to stream animations made at the transformation level (rotation, scale and/or translation), e.g. rigid bodies, a new constraint was added, dubbed Transform Cache, which works in the same way as the mesh cache modifier. Since an Alembic archive can store an arbitrary number of objects, and multiple cache constraints and modifiers added to objects created from the same Alembic archive can reference the said archive, and to help managing and synchronizing data related to said archive (frame offset, scale...), a new data-block is introduced. Although this data-block, called CacheFile, is introduced is this Alembic-centric patch, it shall stay generic and simple enough to be reused in other contexts, for example in some possible future external OpenVDB file importer, or as part of a bigger, scene level, cache system.
The importer automatically adds a cache modifier and/or cache constraint to the imported objects if the caches are split in file sequences or either the data, the parent transform or both are not constant in the Alembic archive.
Some more (still WIP) documentation is available on the wiki.
For the reviewers' attention, so that there is no surprise if/while testing the patch, here is a list of the current known bugs and todos:
- crash when importing cyclic NURBS from another software (this is a buffer overflow due to the fact that cyclic NURBS in other software have duplicated points).
- Sintel IK has bugs, might be an export issue. (Alembic does not really take care of armatures and baked vertices data is correct, so low priority).
- motion blur only affects parts of the mesh.
- allow for custom axis for import/export (in tests in a local branch).
- animated camera focal length (in tests in a local branch, using the mesh cache modifier...).
- create new objects when refreshing/reloading a cache file if necessary.
- expose the Alembic properties that are read to the UI (uvs, normals, vertices, ...) so the user can choose what to import/stream.
- point cache workflow (e.g. only export vertices)