The Object or “Scene” level (/obj/) contains the “top-level” objects of your scene (geometry objects, groom workspaces, lights, cameras).
For more information, refer to the Houdini documentation for Object Nodes.
MH Groom Viewport Lights
This HDA configures viewport and display settings for an optimal grooming experience. It includes three versatile lighting rigs, a specialized groom camera with an extended focal length to reduce distortion, and convenient presets accessible via buttons for adjusting viewport display settings according to different performance and quality needs.
Opening this HDA in a version prior to Houdini 21 will raise warnings mentioning vex strict variables on startup. However, these should not prevent you from working, and are due to Houdini 21 tools dependencies.
The Display Presets provide a set of predefined viewport configurations, enabling quick switching between minimal, intermediate, and high-fidelity display modes.
The HDA includes three configurable light rigs - Flashlight, Overcast, and Three-Point - each designed to simulate different lighting environments for accurate visualization during grooming.
The Flashlight rig simulates a directional, focused light source and is ideal for isolating detail during grooming. It includes controls for intensity, distance, and color, allowing precise adjustment of brightness and mood to suit various viewing conditions.
The Overcast light rig provides a soft, low-contrast lighting environment with minimal shadows and directionality, making it well-suited for evaluating fine hair detail and overall groom uniformity.
The Three-Point light rig features adjustable key, fill, and back light, offering greater control over depth, contrast, and highlight placement for more refined grooming visualization.
The Camera includes adjustable focal length and aperture settings. For Focal Length, 75mm or greater is recommended while grooming to avoid too much distortion when tumbling/panning around. It’s recommended to keep Near/Far Clipping values as close as possible to each other to avoid display artifacts.
MH Groom Workspace
MH Groom Workspace serves as the default container for grooming within the MH pipeline. It provides a SOP-level location for creating and managing grooms, replacing Houdini’s traditional GuideGroom and HairGen OBJ operators.
Opening this HDA in a version prior to Houdini 21 will raise warnings mentioning vex strict variables on startup. However, these should not prevent you from working, and are due to Houdini 21 tools dependencies.
This following section defines the source of the input data. Set Source Mode to SOP Geometry when drawing guides from scratch, and specify a skin mesh or skin VDB as the base. If you're interpolating from existing guides, switch Source Mode to Groom Workspace and connect the appropriate workspace directly. For scenarios involving multiple groom layers, use Groom Workspace as well, feeding in all layers to assemble the final groom.
Initialize new MH Head will set the MH Groom Head as a Skin and Skin VDB inputs without the need of referencing MH Groom Head node. Alternatively, there is a new option available in Houdini 21, where the MH Head DNA Folder is used to load custom MH head and textures from the character’s folder exported from MHC. Users are able to set the desired grooming Region and VDB Option from the Workspace directly, as well as Subdivisions level.
The caching system allows grooming data to be saved and loaded from disk to improve performance. Save to Disk writes the workspace contents to a dedicated groom_geo folder, enabling the workspace to be cached for faster load times. Once grooming edits are complete, Load from Disk can be enabled to read directly from these cached files, bypassing the internal SOP network. This approach is recommended to reduce computation and improve efficiency when opening groom scene files.
A specific Skin - such as scalp, eyebrows - can be assigned based on the needs of the groom.
Hair Color - such as white, grey, blond, red, auburn, brown, or black - and a debug mode can be assigned to support visual feedback and look development. Hair color integrates automatically when using an internal MH Groom Builder.
A dedicated Material is also available, featuring controls for index of refraction and roughness properties to better approximate the physical appearance of hair during viewport preview.
Attributes required for integration with Unreal Engine are included and managed within the workspace. Key parameters such as width and cd (color) are passed through to ensure compatibility and accurate visual representation in the engine. Additional attributes such as clumpid are disabled by default but can be explicitly included via the exporter when required. There is also the option to add custom user attributes.
The workspace also provides detailed Stats for both strands and guides, including total number of curves, points, and average points per curve. These metrics offer valuable insight into groom density and complexity. Additionally, it offers visibility into attribute data such as Name, Width and Color.
MH Groom Export
This node exports groom curves to an Alembic file following the Unreal Engine Alembic for Grooms specification. It is a wrapper around the MH Groom Export SOP, offering a more convenient way to export directly from Groom Workspace OBJ containers.
Source Mode specifies where the geometry data is sourced from:
Groom Workspace: Sources strands, guides, and skin from existing workspaces.
SOP Geometry: Sources groom data from SOP operators. Separate paths must be provided for strands, guides, and skin.
Source Data defines which data to include:
Strands and Guides: Exports both strands and guides.
Strands: Exports only strands.
Guides: Exports only guides, useful for simulated caches.
Workspace defines the space-separated list of workspace paths (used with Groom Workspace mode).
Strands, Guides, and Skin define geometry paths when using SOP Geometry mode. Only one skin path is supported.
Strands is used when Source Mode is set to SOP Geometry. Enter one or more space-separated paths to strand geometry.
Guides is used when Source Mode is set to SOP Geometry. Enter one or more space-separated paths to guide geometry.
Skin is also used when Source Mode is set to SOP Geometry. Only one skin path is allowed.
Output Groups toggles export of group-related attributes groom_group_id and groom_group_name.
Group Identifier controls how groups are defined:
Group ID: Uses an integer primitive attribute.
Group Name (UE5): Uses a string attribute.
Manual: Groups are manually assigned using string attributes (e.g., name). Guide and strand curves must share group partitioning attributes.
Group Id Attribute specifies the name of the integer attribute for Group ID.
Group Name Attribute specifies the string attribute for Group Name (UE5).
Groups defines the number of manual groups.
Name is the name shown in Unreal Engine’s Groom Asset.
Selection defines which curves are included in each group.
Export Strands and Export Guides toggle export of strand and guide curves within each group.
In the Color tab, toggling on Output Color exports the “groom_color” attribute. There are 2 types of input attributes:
Vector3: Selecting this option uses a vector/float3 attribute “as-is” and writes it out as “groom_color.”
Floats: This option uses independent float attributes for each channel (RGB).
In the Roughness tab, toggling on Output Roughness exports the “groom_roughness” attribute.
In the Ambient Occlusion tab, toggling on Output Ambient Occlusion exports the “groom_AO” attribute. Ambient Occlusion can be set via MH Groom Ambient Occlusion tool or by checking the Generate new Ambient Occlusion option.
In the Clump ID tab, toggling on Output Clump ID exports the “groom_clumpid” attribute. The Output Type can be set to one of the following:
Single: An int “groom_clumpid” attribute is exported, which is useful for when a single clump level exists.
Triple: An int3 “groom_clumpid” attribute is exported, which is useful to export multiple clump levels (primary, secondary, tertiary). These are read by the engine, but are not used.
The Clump ID Attribute parameter is used to name the Single int attribute. If the output is set to Triple, the following attribute from 0-2 is then used for each subsequent int3 “groom_clumpid” attribute.
In the Output Guide IDs tab, toggling on the Output IDs exports the “groom_id” attribute. When From Attribute is active, an existing attribute can be used as ID, otherwise a unique pre-primitive ID is computed. The ID Attribute sets the name of the int attribute to be used as “groom_id.”
In the Transform tab, the Up Axis defines the up axis for the resulting alembic file. It can be set to “Y-Up (right handed)” or “Z-Up (left handed).” The latter is the default and used in Unreal Engine. Additional translation, rotation, scale, and/or uniform scale can be applied prior to export.
The proper xform value must be sourced from the head mesh geometry. MH Groom Head comes with this default value and should be passed through using either the Groom Workspace or SOP mode in the MH Groom Workspace. If MH Groom Head is not used, xform should be passed through from supplied mesh.
In the Visualize tab, switch between viewing Strands or Guides by selecting an option under the Visualize Geometry dropdown menu.
The following attributes are viewed under the Visualize Attribute dropdown menu: None, Root UV, Group ID, and Color.
Alembic File specifies the Output file path.
Create Intermediate Directories ensures output directories are created if missing. Export Hidden includes primitives even if they are not visible.
Valid Frame Range toggles between single-frame export and frame range export. Save to Disk executes the export and writes the Alembic file.