This guide shows how to export strand-based grooms created using XGen Description in Maya as an Alembic file, ready to be imported into Unreal Engine. It can be used with the Groom Starter Kit; the starter kit includes a Maya scene with a basic XGen Description groom setup and an Unreal Engine project with Groom Asset and Groom Binding.
Exporting the Groom
Use XGen Description to create the groom in Maya.
From the MetaHuman menu, open the Groom Exporter tool.
Configure the model to export from:
In Project Directory select the
workspace.melfile for the Maya project you are exporting from. This ensures proper resolution of paths for assets used during export.Select the Maya ASCII (
.ma) or Binary (.mb) Scene File that contains your groom setup.If the model and groom are in the same file, the Model File can be left blank. If you need to select a different model mesh you can source the Maya ASCII (
.ma) or Binary (.mb) file here.
Click Refresh.
Provide information about the specific groom mesh to export:
In the Model Mesh field, select the base mesh that was used to build the groom. This ensures correct alignment and surface mapping during export.
Leaving the Scene Up Axis set to Y will ensure the exported data is correctly oriented for Unreal Engine.
Select individual guide descriptions or all available guides to export from the Guides panel.
In the Interpolated panel, assign different groom_group_ids from the drop down menu on the right. Individual or all interpolated hair descriptions can be selected.
Unreal Engine supports up to 15 groom_group_id per groom asset.
Use the Output File to select a folder where to export to.
Click Export.
Once the export is complete, you will get a confirmation dialog with guide and interpolated hair counts. The exported Alembic file can be imported into Unreal Engine as a Groom Asset, and used with a MetaHuman Character.
Alembic Schema for Grooms
The Groom Exporter will export strand-based grooms created using Maya's XGen Description in an Alembic file compatible with Unreal Engine. To standardize the import process into Unreal Engine, an informal schema for hair data was implemented.
Note: If an Alembic file contains curves but does not follow this schema, the groom will still import into Unreal Engine - but without any custom attributes.
When this schema is followed, Unreal Engine can interpret and apply key attributes such as width and color, along with guide attributes used for simulating interpolated hairs. Support for multiple hair groups in a single Alembic file is handled via the groom_group_id attribute. The rootUV attribute is also supported and retrieves the UV coordinates of the underlying surface (e.g., skin), enabling spatial variation across the groom based on its attachment area.
By default, the exported attributes include groom_group_id, which defines group segmentation. If not explicitly set, only one group will be used. The groom_width attribute is exported if width data is present. If guide curves are selected, they will be tagged with the groom_guides attribute. The groom_rootUV attribute is automatically included to support spatial variation across the underlying mesh surface.
More information can be found in the Alembic for Grooms Specifications.