Ornatrix Alembic Hair Export 



Exporting 3ds Max Ornatrix hair and guides into Alembic format is now supported. Hairs are exported as Alembic curves into an *.abc file which can then be imported into various other applications and renderers supporting the Alembic format.

Various information such as hair positions and widths is exported. It is possible to export a single strand object or a group of them, for example, all hair objects present within the scene. You may also export a single frame or an animation range for the hair.

Options for the export process are specified in a special dialog. Alternatively, you may use MaxScript to export hair without any UI.


Exporting hair to Alembic: 

  1. Select the hair objects which you would like to export inside the scene. Alternatively, you may leave scene selection empty and just export all Ornatrix hair and guide objects within the scene. If there are no such objects inside the scene you will be notified.
  2. Click on the "Export" option within 3ds Max's main menu
  3. In the file format drop down select "Ornatrix Alembic Hair"
  4. Browse to the destination directory and type in your target file name
  5. Select your preferred export settings.
  6. Press "Export" button to write the Alembic file

Settings Dialog 

The settings dialog presents you with some configurable options for writing the Alembic file:

  • Format
    Specifies the Alembic archive format to use. Ogawa is a more popular and a more efficient format.
  • Selected Hair Objects
    When this option is used, only currently selected hair and guide objects within the scene will be exported. This option will be greyed out of the selection is empty.
  • All Hair Objects in the Scene
    When this option is used, all hair and guide objects within the scene will be exported.
  • No Animation
    Allows exporting just a single frame within the scene. As a result all exported hair will be static and the Alembic ABC file will be smaller in size. This is analogous to setting the start and end time for the export to the same frame.
  • Current Animation Range
    Allows exporting all frame within 3ds Max's current animation range. This range is defined by 3ds Max's time line.
  • Custom Range
    Allows you to specify custom start and end frames for which to export hair and guide animations manually. The end frame must be equal or bigger than the start frame.
  • Use World Coordinates
    When on all coordinates will be exported in world coordinates, otherwise they will be exported in local object coordinates. Turn this option off when exporting hair animation to be used with Animation Cache modifier.
  • Export One Object per File
    When on, separate Alembic files are written for each of the objects being exported. Object's name will be appended to the file name.
  • Unreal Engine 4 Export
    When on, the resulting Alembic file will be formatted to be compatible with groom import in Unreal Engine 4

Exported Components 

These are different aspects of hair which can be selectively exported or ignored:

  • Export Velocities
    When on, a velocity vector will be written for each hair vertex. This is needed if you're exporting per-frame .abc files and want to have motion blur working when rendering it out.
    • Velocity Interval Center
      When velocity export is used specifies the offset from current frame which will be the center of the interval used to compute the velocity vectors
    • Velocity Interval Length
  • Export Strand Data
    When on, any per-strand and per-vertex data which exists in hair will be written to the Alembic file. This data can be created with Edit Guides modifier or Generate Guide Data modifier, for example.
  • Export Texture Coordinates
    When on, all texture coordinates channels present in hair will be written to the Alembic file
  • Export Widths
    When on, the strand width/thickness information will be preserved into the Alembic file
  • Export Strand Ids
    When on, unique strand ids will be written to the Alembic file. This is useful if you want to ensure that applying operators after importing the hair back will provide consistent results since strand ids are often used to set random values by some operators.

Exported Data Format 

Ornatrix hair or guide strands are written to an Alembic file as curves. Information such as width, velocities, and texture coordinates is included in the description of said curves. Additional information which is Ornatrix-specific is attached to either individual vertices or individual curve primitives within Alembic file the following way:
  • Strand ids are written as per-curve geometric attributes with name strandId
  • Strand groups are written as per-curve geometric attributes with name strandGroup
  • Per-vertex channel data is written as floating point per-vertex geometric attributes with name chan_ followed by the channel's name
  • Per-strand channel data is written as floating point per-curve geometric attributes with name chan_ followed by the channel's name

To import the Alembic hair with Unreal Engine 4 

  1. Make sure you use the Unreal Engine 4 Export checkbox in the export settings
  2. Follow instructions from Unreal Engine to import the resulting .abc file into UE4

Space orientation 

Different hosts (such as Maya, 3dsmax, Cinema 4D, Unreal Engine) may have different coordinate which is considered to be "up" direction. For example, in 3dsmax Z-axis is up and in Maya and C4D Y-axis is up. To allow exchange of data between these hosts Ornatrix provides the Up Axis parameter during export. No matter the current up-axis of the host, the up-axis of the exported data will be determined by this parameter.

Therefore, if you want to export an Alembic file to 3dsmax you need to specify Z-axis as up. If you want to export to Maya or C4D, specify Y-axis as up. You cannot adjust this parameter during import because the host which is importing the data does not know which transformation was applied during the export. It is therefore important to specify the correct axis during the export.


MaxScript Access 

You may use OxAlembicExport global MaxScript function to export hair into an Alembic file. This function has the following signature:

OxAlembicExport [string filePath] [bool exportSelectedHairs] [int startFrame] [int endFrame] [bool exportRenderVersion] [int upDirection] [int format] [bool useWorldCoordinates] [bool exportVelocities] [bool velocityIntervalCenter] [bool velocityIntervalLength] [bool exportStrandData]

All arguments following upDirection are optional, however, you must specify all arguments prior to the last optional argument.

  • filePath: Specifies an absolute path where to save the Alembic file.
  • exportSelectedHairs: When true currently selected scene hair and guide objects are exported. All scene hair and guide objects are exported otherwise.
  • startFrame: First frame of hair animation to export.
  • endFrame: Last frame of hair animation to export. If this is the same as startFrame a single/static hair frame will be exported.
  • exportRenderVersion: If true render count and settings for hair will be exported. Otherwise hair will be exported as it is seen in the viewport.
  • upDirection: Specifies the "up" direction of the exported hair scene. Accepted values are 0: X-axis, 1: Y-axis, 2: Z-axis. For example, exporting hair to Maya requires Y to be the "up coordinate".
  • format: Specifies Alembic format to use. Accepted values are 0: Ogawa, 1: HDF5.
  • useWorldCoordinates: Set to true or false to control in which coordinates hair will be exported.
  • exportVelocities: Set to true or false to export per-vertex velocities or not.
  • velocityIntervalCenter: Set to frames to offset velocity interval.
  • velocityIntervalLength: Set to frames to set length of velocity interval.
  • exportStrandData: When true, per-strand and per-vertex strand data is exported.
  • exportStrandGroups: When true, strand groups are exported.
  • exportStrandIds: When true, strand ids are exported.
  • exportWidths: When true, strand vertex widths exported.
  • exportTextureCoordinates: When true, per-strand and per-vertex texture coordinates are exported.
  • exportNormals: When true, strand vertex normals are exported.


You can find examples on usage of Alembic exporter by examining the unit tests in Test_AlembicExporter.ms.

Missing Something? Let us know if this page needs more information about the topic.