Alembic USD Plugin

Alembic USD Plugin


Configure Environment

The Alembic USD plugin is not built by default in the USD CMake configuration, ensure that you have enabled this in your build with -DPXR_BUILD_ALEMBIC_PLUGIN, also ensuring that you have the prerequisite software, Alembic(v1.5.2) and HDF5(v1.8.11) installed. Also ensure that you have correctly set your environment variables:

Environment Variable Meaning Value
PYTHONPATH This is a path list which Python uses to find modules. $PYTHONPATH:USD_INSTALL_ROOT/lib/python/

For more information see our page on Advanced Build Configuration.

 

As shipped, USD supports its own ascii (usda) and binary (usdc) file formats. However, it is possible for USD to support additional formats by providing it with a custom file format plugin. One of these plugins, usdAbc, which provides the ability to interact with Alembic files, is included in the pxr/usd/plugin directory of the USD distribution. In this example, we'll demonstrate the extended USD functionality using the existing USD tools.

 

Let's start by creating a simple USD file (save it as hello.usda):

#usda 1.0
 
def Xform "hello" 
{
   def Sphere "world"
   {
   }
}

 

The previous snippet defined a simple sphere in an ascii-backed USD file. Now, let's use usdcat to convert it to an Alembic file!

$ usdcat hello.usda --out hello.abc

 

Now we can use usdview to view our new alembic file.

$ usdview hello.abc

 

 

We can also convert this Alembic file back to USD using a similar call to usdcat.

$ usdcat hello.abc --out hello_converted.usda

 

Known Limitations

In general, Alembic files can be used in place of USD files. There are some caveats to our current Alembic support in usdAbc. For example, we translate AbcGeom Schemas except for FaceSet, NuPatch and Light. Also, we currently don't translate Alembic's notion of Component Ops, instead we currently flatten them into a 4x4 Matrix, this could be added in the future.  Finally, while we hope to achieve lossless translation from abc to usd, Alembic files will never perform as well as native USD binary files in composed scenes.