Table of Contents

This page provides a tutorial for exporting Alembic files from Houdini and rendering them in 3ds Max using V-Ray.


This guide walks you through the process of exporting Alembic files from Houdini. We go over the general workflow for exporting Geometry, Particles and Crowd simulations, taking care to cover some common pitfalls you may stumble upon.

The process of transferring custom attributes and partitioning the alembic archive into custom shapes is explained in-depth.

For readability, this guide is separated into chapters covering the following topics:

To download project files:  Download Project Files (260MBs)

Want to follow along but don’t have a license?: Download Free Trial

General Information and Considerations

Detailed information for supported Alembic features can be found at the Alembic Support page for V-Ray for 3ds Max.

Custom Attributes

All custom point attributes are preserved and can be accessed through the Vertex Color Texture 1. You need to feed it to a material, apply that material to a V-Ray Proxy and press the Update button on the texture to refresh the Channel Name drop-down menu on the Vertex Color texture.

A couple of remarks regarding custom attributes:

  1. If you use a Wrangle node to create a v@my_vector = rand(@ptnum); attribute, Houdini will generate a 3flt class attribute. This will work just fine inside Houdini but if you attempt to export the point cloud as is to the Alembic file, V-Ray won't be able to use this attribute at render time. As per the Alembic format specifications, V-Ray only supports float, vector2, vector3, color3 and color4 attributes. Therefore, when you middle-mouse-button click your Houdini node, my_vector should read as my_vector 3flt (Vec) or my_vector 3flt (Clr). Simply put, my_vector 3flt will not work. You can force Houdini to give you a Vec or Clr class attribute by creating your attribute using an Attribute Create node and then modifying it in the Wrangle node.
  2. Attempting to feed a custom float attribute to a vector input of the V-Ray material directly from the Vertex Color to the material will produce incorrect renders. Especially if you have many attributes stored in the file. Every 3 Float attributes are represented as a single vector/color attribute - @my_first_float , @my_second_float and @my_third_float will be loaded as the components of a single vector attribute. You need to make sure to specify the correct sub-channel on the Vertex Color texture.

Motion blur / Velocity

In the case of a Single Alembic File holding multiple Frames of data loaded through a V-Ray Proxy:

  1. Motion blur is calculated automatically by V-Ray based on the transformations and deformations of the geometry stored inside the Alembic file, provided that the point count of the geometry does not change!
  2. If the point count is changing, V-Ray is NOT able to determine the velocity vectors automatically. Thus, you get no motion blur by default.
  3. To get motion blur in this situation, you need the v attribute present in the Alembic file. V-Ray reads the v attribute and generates the motion blur effect based on that.
  4. The v attribute is NOT used if the point count does NOT change. In other words, v is ignored if the topology does not change.

 In the case of Multiple Alembic Files holding One Frame of data each, loaded through a V-Ray Proxy: (i.e. $HIP/file_name.$F4.abc imported as file_name.####.abc inside a Proxy)

  1. Motion blur can NOT be calculated automatically by V-Ray regardless of the topology change. When loading an Alembic file for rendering, V-Ray does not look at (Frame - 1) or (Frame + 1) to determine the transformation/deformation of your mesh.
  2. Because of (1) , you have to provide a v attribute when exporting your files. The easiest way to do that is to use a Trail SOP in Houdini, set to Compute Velocity mode.

The motion blur information for single versus per-frame Alembic files holds true for all Chapters of this tutorial.


 1 – The use of Vertex Color texture can be changed with either VRayUserColor or VRayUserScalar textures when reading color sets and attributes of an alembic. 

Was this helpful?