Alembic 1.7.0

@lamiller0 lamiller0 released this Nov 9, 2016

2016-11-7, Alembic 1.7.0
Hello Alembic users,

Thanks to your feedback we are introducing the new layering functionality to Alembic, as discussed here:!topic/alembic-discussion/s0zm8VEBMOk

AbcCoreLayer was developed collaboratively between Blizzard Entertainment and Sony Pictures Imageworks and is a way for you make sparse changes to an Alembic file by writing those changes into any number of other Alembic files, and combining them on read via AbcCoreLayer.

Here are some examples of what you can do via layering:

You can add additional properties to a shape.
Example: Adding UVs to a polymesh that currently lack them

You can override properties.
Example: Override static points on a polymesh with animated points.

You can add new objects.
Example: Add a shape to an existing hierarchy.

You can prune objects.
Example: Remove shapes you don't like, or entire branches of the hierarchy.

You can prune properties.
Example: Removing incorrect normals.

You can replace an object hierarchy with a different one.
Example: You can replace separate curves groups with one big one.

You can replace property hierarchy.
Example: Don't like a bunch of properties in user properties? It can be replaced with a bunch of other properties, without needing to prune individual properties.

AbcCoreLayer provides a SetPrune and SetReplace convenience function in Util.h, for setting up the MetaData appropriately.


AbcImport: Support AbcCoreLayer by specifying more than one file to the AbcImport command.

Support writing only UVs via -uvsonly or -uvo flag.

AbcDiff: Given 2 Alembic files, create a sparse diff between them.

Other changes:


Internally keep track of how many bytes we've written to reduce the number of potentially expensive calls on write.


Harden some unnecessary templated constructors in Abc and AbcGeom.

Deprecate (but do not remove) constructors that take the kWrapExisting and kTop flag and provide reasonable constructors that don't use these flags in Abc and AbcGeom.


Alembic 1.6.1

@lamiller0 lamiller0 released this Jul 12, 2016 · 84 commits to master since this release

Hello Alembic users,

Thanks to your feedback and reports we have a few bug fixes and enhancements.


OPoints::setFromPrevious was not setting the previous velocity sample.
(pull request 85)

Fix small bug with AbcCoreOgawa::StreamManager COMPARE_EXCHANGE macro on Windows
(pull request 86)


Fix some unused variable warnings in AbcImport, AbcExport.


AbcStitcher: Support stitching mixed indexed and non-indexed GeomParams.


Alembic 1.6.0

@lamiller0 lamiller0 released this Jun 30, 2016 · 93 commits to master since this release

Hello Alembic users,

Thanks to your generous feedback and code contributions we are happy to announce
the 1.6.0 release of Alembic.

We've overhauled our build system, gotten rid of in favor
of going native CMake. We now better support Windows and also now require at
least version 2.8.11 of CMake.

For the latest build instructions please see:

Other changes include:

Moved several core utilities out of examples and into bin.

Make HDF5 an optional dependency.

AbcOpenGL, PyAbcOpenGL, and viewing tools have been moved into a different repository.
It is located here:

Allow install directory prefix to be explicitly set.
(pull request 46)

Add CMake generated configure file, so that the version of the project only
needs to be set in one place, users know if Alembic was built without HDF5
support, and whether it is using tr1, boost, or neither. (C++11) as a

Add ability to create a Windows dll, and add symbol visibility flags for other
compilers. (pull request 14)

Improve Ogawa write speeds on Windows by adding a larger buffer.
(pull request 38)

Make the 3 int values on OSubD optional.
(faceVaryingInterpolateBoundary, faceVaryingPropagateCorners, and
interpolateBoundary issue 34)

Remove unnecessary scoped static initialization of some variables. (issue 27)

Arnold Procedural:
Add Ogawa support. (pull request 20)

Support exporting MFnFloatArray. (pull request 45)

Fix bug when Nurbs curves group are only animated via the transforms and speed
up the isAnimated check. (pull request 82)

Many AbcImport/AbcExport changes based on feedback and contributions from
Autodesk, and to bring the plugins more into line with what is in the devkit.
(pull request 51 and 62 through 79)


Alembic 1.5.8

@lamiller0 lamiller0 released this Jan 15, 2015 · 251 commits to master since this release

Hello Alembic users, thanks to your feedback and reports we have a few bug fixes and enhancements.


Fix wstring array hash calculation. (pull request 17)

Build system:
Make the OS X version check more robust to determine if C++11 flag is required. (pull request 18)


Add asOgawa option for PyOArchive and make Ogawa the default for CreateArchiveWithInfo. (pull request 16)


Alembic 1.5.7

@lamiller0 lamiller0 released this Dec 9, 2014

Hello Alembic users, thanks to your feedback and reports we have a few bug
fixes and enhancements.


Add missing methods to IPoints.
Add Points schema to cask.
(pull request 12)

Add oproperty mapping for additional imath classes.
Add iproperty to oproperty class mapping using pod, extent values.
Remove named oproperty override mapping (replaced by above methods).
Add metadata accessor to property class.
Fix is_deforming method on objects.
(pull request 15)


Add support for writing out all UV sets on an MFnMesh with the
-wuvs/-writeUVSets flag. (pull request 13)

Support loaidng multiple UV sets on an MFnMesh when present. (pull request 13)



@lamiller0 lamiller0 released this Oct 17, 2014 · 275 commits to master since this release

Hello Alembic users, thanks to your feedback and reports we have a few bug
fixes and enhancements.


Improve stability of TimeSamplingType equality comparison. (pull request 11)



Recognize "faceVaryingInterpolateBoundary" not "facVaryingInterpolateBoundary"
plug when writing out an MFnMesh as a SubD. (pull request 6)

Don't produce an error for meshes without valid per-face mapping, e.g. whole
object mappings. (pull request 6)

Only create face sets for shading groups applied with with per-face mappings.
(pull request 6)

Make sure a schema that is detected to be static is written out with the
default time sampling. (pull request 7)


Don't warnt about UVs or normals size being mismatched if the mesh has no
points. (pull request 8)

Connections to custom VectorArray and PointArray properties will no longer fail.
(pull request 8)

Support varying or vertex color properties and unpacking them into facevarying
as Maya requires. (pull request 8)

Only call setUsedAsColor for attributes that are constant scoped.
(pull request 8)


Revamp AbcStitcher to better handle cases where certain shapes or properties
may not exist in some of the files. (pull request 7)

Build system:

Boost_PYTHON_LIBRARY is case sensitive. (pull request 8)


Alembic 1.5.5

@lamiller0 lamiller0 released this Jul 28, 2014 · 305 commits to master since this release

Hello Alembic users,

Thanks to your feedback and reports we have a few bug fixes and enhancements.


Fix bug in OSubD::setHoles where corner indices were being set instead.

Improve lookup times and numerical stability of TimeSampling.


Camera rotations are now done in X,Y,Z order instead of Z,X,Y

Python API:

Address Issue 347, expose the CoreType in python.

Wrap ALEMBIC_LIB_USES_BOOST around get_pointer.


If a shading group has an attribute named AbcFaceSetName, use that attribute
instead of the shading groups name for the face set name.

Fix for Issue 339, some dag nodes can't be pushed onto MDagPath, so make sure
the push was successful to avoid infinite recursion.

Fix for Issue 342, for improved performance skip over shadingEngines and
subgraphs in util::isAnimated.

Set AbcFacesetName attribute on newly created shadingGroups.

Fix bug with open form check on curves.

Fix bug with restoring knots from a curve group with more than one curve.


Fix for Issue 344, show array property values of length 1.

Improve performance for some graphics cards by adjusting some drawing options.
(also done in SimpleAbcViewer)

Add -v option to automatically display the first sample of all properties.
Print an error message when seg fault is detected.

Fix for Issue 345, handle V3d and double array on write.
Default to Ogawa on write.

Fix for Issue 346, TimeSampling is now preserved for properties that are
copies on write.