Ornatrix Alembic Hair Export
Videos
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:
- 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.
- Click on the "Export" option within 3ds Max's main menu
- In the file format drop down select "Ornatrix Alembic Hair"
- Browse to the destination directory and type in your target file name
- Select your preferred export settings.
- 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 - Export Each Strand as Separate Object
When on, each hair strand will be exported as a separate Alembic single curve object with its own transform instead of a single object with many curves.
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
- Velocity Interval Center
- 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. - Export Surface Positions
When on, surface dependencies of strands will be written to the Alembic file
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
- Make sure you use the Unreal Engine 4 Export checkbox in the export settings
- 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] [bool exportPerObject] [int format] [bool useWorldCoordinates] [bool exportVelocities] [float velocityIntervalCenter] [float velocityIntervalLength] [bool exportStrandData] [bool exportStrandGroups] [bool exportStrandIds] [bool exportWidths] [bool exportTextureCoordinates] [bool exportNormals] [bool unrealEngine4Export] [bool exportSurfacePositions]
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".exportPerObject
: When true, each object will be exported to a separate .ABC file.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.unrealEngine4Export
: When true Alembic file will be formatted in a way that Unreal Engine expects for its groom import process.exportSurfacePositions
: When true, surface dependencies of strands will be written to the Alembic file
Examples
You can find examples on usage of Alembic exporter by examining the unit tests in Test_AlembicExporter.ms.