Esteban Tovagliari nicely surprised everyone recently by showing off first results of his work on an Alembic exporter in Blender.

Just to remind you, Alembic is one of the open source projects that the CG industry has been blooming with lately (Ptex, Field3D etc.). Essentially it's a framework that allows baking complex animated scenes with FX into non-procedural data ready to be freely used in any production pipeline.

The project was started by Sony Pictures Imageworks and Industrial Light & Magic and is now supported by major vendors such as Autodesk, The Foundry, Luxology and Side Effects Software.

Few months ago Alembic v1.0 was released during SIGGRAPH (the talk above was shot there), and the very next day a Birds of Feather session took place with OpenColorIO, Ptex, OpenImageIO, OpenEXR and Blender teams participating.

So let's get back to Blender. Esteban started working on support for the framework just recently, but there's already quite a lot of progress. An Alembic flavored build of Blender is currently available for 64bit Linux systems at Graphicall, and source code is currently on Github (in the "alembic" branch), but will be removed in favour of a single patch.

Esteban kindly agreed to answer few questions on his project.

Judging by your recent software projects you seem to be quite interested in interoperability between applications. First came Cortex, now it's Alembic. Is there a particular reason for that?

I'm interested in Cortex, Alembic and other VFX tools. There's already support for Cortex and Alembic in the other apps I use, so I thought it would be interesting to try to use them in Blender and it would also be a good way to learn more about them.

What is your impression of Alembic from purely technical point of view?

Alembic is great for people who use different software packages in their pipeline, collaborations between different companies… It's already known that most big studios have custom file formats and tools similar to Alembic, but Alembic is open, supported by most production applications and freely usable for everyone — big companies, small studios and even individuals.

There's not much documentation for developers and there are no Python bindings yet, but Alembic's developers are working on it, so it isn't going to be a problem.

What are your objectives with this project and how much of that is done already?

The primary objective project is writing an Alembic exporter for Blender that's usable in production. The current exporter is already quite complete. It exports meshes and subdivision surfaces, animation, UVs, normals, vertex colors and custom properties. It also writes transform hierarchies and cameras.

Among important features missing there's just exporting of fluid meshes and better camera export. I will probably do exporting of particles too.

It looks like finalizing importing of Alembic data will require some additional work like writing new modifiers. Could you please shortly outline what needs doing?

I think there are other parts of Blender to improve before importing Alembic files is worth, like external renderer integration or trying to integrate all different simulation tools into a unified dynamics system.

If you work only with Blender, it's better to use the existing library linking features and use .blend files. If you use other apps, you probably use Blender in the first stages of your pipeline, then use Maya or Houdini to light your scene and add effects, and then you use an external renderer.

Are you planning to get your work to upstream Blender at some point in the future so that Alembic support was available out of box?

That's my idea, but it doesn't really depend on me. I'll ask for a review when the code is ready.