MH Groom Builder
MH Groom Builder is a centralized workspace for styling interpolated hair, combining key grooming processes, including strand generation, guide interpolation, and clumping. Interpolated hair is automatically generated when a skin geometry, density mask, and guide curves are provided. Each stage of the groom is fully customizable through the use of masks and attributes, allowing for precise control over hair shape and density. The Groom Builder consolidates many of Houdini’s standard grooming tools into a single node for styling interpolated hair. Clumping can be easily achieved by enabling a few attributes.
Groom Builder Masking allows for flexible control over hair density using various mapping methods. Parameters such as Density Attribute, Density Texture, and Mask Texture can be used to modulate the ratio of hairs across the surface, enabling precise control over distribution and styling.
Strands Management controls how interpolated hair is generated within the Groom Builder.
Generate New Strands procedurally populates the surface with interpolated hair and can be controlled using Groom Builder Masking through a specified mask or texture input.
Use Strand Input takes any hair strands that are input into the Groom Builder.
Generate Strands controls how hair is scattered across the surface. The Density parameter determines the number of strands and can be overridden with an attribute or texture via the adjacent dropdown. Root Scatter Seed adjusts the random distribution while maintaining density, and Root Relax Iterations improves evenness of strand placement at the cost of additional computation. Extra Scatter Iterations can be used to further refine the scatter result. Resample New Curves adjusts curve resolution based on CV count, and Add Input Guides to Output Strands includes the original guides in the final strand output.
Under Interpolation Options, Number of Neighbors defines how many guides are used to interpolate the hair.
Parting enables or disables the use of parting lines in the groom. When activated, parting lines can be used to influence hair direction and flow.
Color controls the appearance of strand coloration. Copy Workspace Color imports color settings from the Groom Workspace, while the Color Ramp defines the strand color gradient from root to tip.
Width controls the thickness of the hair strands. Set Width enables width adjustment, and Width defines the overall curve width. The Width Profile allows for shaping the width along the length of each strand, from root to tip.
Clamp Zero Widths prevents strands from having a width of zero by enforcing a minimum value. When enabled, Width Minimum Value sets the smallest allowable curve width, with a default of 0.000005. This helps avoid rendering or simulation issues caused by zero-width geometry.
Gain provides a multiplier for adjusting existing curve widths. When Use Gain is enabled, the Gain value scales the current width - 1 leaves it unchanged, values below 1 reduce it, and values above 1 increase it.
Randomize introduces variation to curve widths. When Use Randomize is enabled, a specified Fraction of curves are affected. The Random Seed controls the random selection. Random Min and Random Max define the range by which the curve width is multiplied. Random Shape blends this variation along each strand from root to tip.
Clumping controls how strands cluster together based on guide input. Enabling Guide Clumping allows strands to clump directly to the input guides. The Clumping Subdivisions setting determines the level of clumping detail, with options for no subclumping, primary, secondary, or tertiary clumping.
In the Guide Clumping subsection, clumping is activated when the toggle is enabled. The Blend parameter adjusts the overall strength of the clumping effect and can be overridden using an attribute via the adjacent dropdown.
Primary enables procedural primary clumping, which forms the main groupings of hair strands from which secondary and tertiary clumps are derived. The Blend parameter controls the overall influence of the clumping and can be overridden using an attribute via the dropdown menu.
Refer to the Houdini documentation for detailed information on the guide processes Frizz and Length. For additional guidance on Spread and Scraggle, see the MH Spread and MH Scraggle documentation.
Secondary enables procedural secondary clumping, adding a finer level of clustering within the primary clumps. The Blend parameter adjusts the overall intensity of the effect and can be overridden using an attribute via the dropdown menu.
Tertiary enables procedural tertiary clumping, introducing the finest level of clustering within secondary clumps. The Blend parameter controls the strength of the effect and can be overridden using an attribute via the dropdown menu.
Strand Styling offers additional controls for shaping and detailing hair strands. Parameters such as Flyaways, Frizz, and Length reference the Houdini Guide Process tools, while
These settings allow for refined adjustments to strand behavior and appearance based on guide-driven or procedural styling methods.
Collisions provides controls for resolving strand intersections with the skin geometry using a Skin VDB.
Transfer Attributes allows skin and guide attributes to be copied to the strand output by specifying point, vertex, primitive, and detail attributes, and optionally adding a tightness attribute for enhanced control in simulation or shading.
Guides Output Management controls which guide data is passed through. Input guides can be preserved under a custom or default group name, and clump-related guides (primary, secondary, tertiary) can be included as separate groups. Parting lines from the original guides can also be retained in the output.
Visualize provides debugging and display options for clump visualization. Debug Display Options lets you choose what to display - None, Primary, Secondary, or Tertiary clumps.
Strands or Guides specifies whether the clump visualization is applied to strands, guides, or both.
Stats provides visibility into groom-related data. Enabling Show Groom Data displays extracted topology information from the internal strands and guide streams, useful for debugging and analysis.
MH Groom Clump Builder
MH Groom Clump Builder clumps and styles curves, with support for generating and managing strands. Guide curves can be clumped using guide-based grouping or through primary, secondary, and tertiary clumps, with styling options such as tightness, curling, and twisting. Strands can be managed or created from input.
This node mirrors the MH Groom Builder, excluding interpolate hair settings - refer to the Clumping section of the
MH Groom Multi Clump
MH Groom Multi Clump is the clumping system used by
MH Groom Clump Tighter
MH Groom Clump Tighter tightens clumps using a Mask Attribute applied to either the guides or the skin, allowing for localized control over clump definition.
MH Groom Scraggle
MH Groom Scraggle applies 3D noise-based deformation to curves, using methods similar to Houdini’s Attribute Noise node.
It provides a streamlined way to add natural variation and irregularity to grooms.
MH Groom Spread
MH Groom Spread adjusts the shape of curves by spreading them sideways and vertically. Around Spread moves curves sideways around the root rotation axis.
While Lift Spread shifts them up or down, tangential to the skin. This behavior is based on the Bend Guide Process method.
MH Groom Width
Width controls the thickness of the hair strands. Set Width enables width adjustment, and Width defines the overall curve width. The Width Profile allows for shaping the width along the length of each strand, from root to tip.
Clamp Zero Widths prevents strands from having a width of zero by enforcing a minimum value. When enabled, Width Minimum Value sets the smallest allowable curve width, with a default of 0.000005. This helps avoid rendering or simulation issues caused by zero-width geometry.
Gain provides a multiplier for adjusting existing curve widths. When Use Gain is enabled, the Gain value scales the current width - 1 leaves it unchanged, values below 1 reduce it, and values above 1 increase it.
Randomize introduces variation to curve widths. When Use Randomize is enabled, a specified Fraction of curves are affected. The Random Seed controls the random selection. Random Min and Random Max define the range by which the curve width is multiplied.
MH Groom Framing
MH Groom Framing computes and manipulates orientation, scale, and curveu attributes on curves. This node is used as a building module in the
Toggling on the Add Orientation Attributes adds orientation attributes to the curves.
Toggling on the Add Scale Attribute adds scale attributes to the curves. By default the tool will add the pscale attribute. The effect of the scale attribute can be seen if the output curves are used for creating tubes in MH Groom Guide to Tube node for example. The Width Scale of the tube will be defined by pscale attribute from the curve.
Add Curve U Attribute creates a curveu point attribute in the 0 to 1 range for each curve, storing the unit curve parameter value for each point along the curve from root to tip. Root = 0, Tip = 1.
MH Groom Braid
MH Groom Braid is used to create braided grooms. It allows full control over braid shape, frequency, strand properties, and randomness to achieve a wide range of braid styles.
The number of strands used in the braid is defined by the Num Strands parameter. The overall shape of the braid is controlled by Profile, which sets the braid scale and can be overridden using the Profile Attribute (default is pscale). Width and Height define the physical dimensions of the braid, while Profile Scale, Width Scale, and Height Scale control how these values vary along the length of the braid.
Frequency is controlled through Samples Per Cycle, which determines how many points make up one braid cycle. Cycle Density sets how many cycles are distributed along the curve, and Cycle Offset shifts where those cycles begin. Cycle Scale adjusts the density along the length of the braid for dynamic variation.
Strand-specific properties such as Thickness, Width, and Height define the size of each thread in the braid. These can be modulated along the strand length using Thickness Scale, Width Scale, and Height Scale. Additional shaping is possible using Thickness Squeeze, which scales the thickness within each braid cycle, and Thickness Squeeze Scale, which applies that variation across the entire strand.
Randomness can be introduced using Add Noise, enabling noise-based variation across the braid.
MH Groom Bun
MH Groom Bun generates and styles guide curves for groom buns. It creates customizable curves from points, allowing users to choose between Twist or Donut styles. The node provides controls to adjust the overall shape, size, and structure of the bun, offering flexibility for a variety of groom bun looks.
Buns can be distributed using either Probability or a Skin Attribute, and the number of style variations is defined using the Variants parameter.
Shape Controls define how the initial bun guide curves are generated. The selected Generation Style determines the guide layout: Single Center places a single guide at the center point. Edge distributes guides evenly around a defined radius from the center. Scatter randomly places guides around the center point, with additional parameters available to control relaxation and seed values for guide placement.
Bun Type offers two styles: Twist and Donut, each with its own shaping parameters.
MH Groom Cornrow
MH Groom Cornrow generates guides on the skin that feed into braids to create a cornrow effect. Curves can be distributed by Distance Around Curve, a Custom Mask Attribute, or having them Combined.
Distance Around Curve is the default. Scatters curves within the distance, specified by Density Distance.
Custom Mask Attribute scatters curves within the painted skin attribute, defined by Density Mask Attr.
Combined scatters curves within the area defined by the combination of the previous two methods, Distance Around Curve and Custom Mask Attribute.
Subtracting the custom mask attribute from the curves placed by Distance Around Curve using the Combined function.
Guide distribution can be modified using procedural noise types such as Perlin, Simplex, and Worley Cellular for natural randomization.
Guide shape manipulation includes tip offsetting, bending, crossover blending, and advanced operations such as length-based curve deletion, skin-distance-based pushing, and precise parting line control.
The Attributes & Appearance section manages curve thickness, introduces random shape variation, and outputs key primitive attributes - including clumpid and braidid - to support downstream processing and further customization.
MH Groom Guide Fill
MH Groom Guide Fill procedurally generates tube-based guide curves with parameterized control over width scaling, twisting, distribution density, and attribute output for precise shaping and customization.
If Add Fill Width is toggled on, the pscale attribute will be added to the generated curves. Fill Radius controls the radius of the fill ratio. Scale by Attribute adds pscale_gain to the generated curves. It can then be randomized using the Randomize parameters.
The generated curves can be further modified with Twist. Roll controls the angles in degrees in which the curves twist around the tube. Full Twist is the number of full 360 degree twists. Partial Twist are twists that do not fully reach 360 degrees. The Twist Ramp controls how tightly the curves are twisted along the length of the guide curves.
In the Attributes & Appearance tab, the Thickness Attribute can be toggled on to add the width parameter to the generated guide curves. Thickness sets the curve width and Thickness Profile modifies the width along the curves from roots to tips.
The Primitive Attributes are the list of primitive attributes to be output on the guide streams. The Point Attributes are the list of point attributes to be output on the guide streams. Toggling Output Curve U on will add the curveu parameter to the generated guide curves.
Root Guides enables or disables the rooting of guides.
This tool is ideal for creating structured grooms with even, customizable distribution and stylized shaping, including twist deformation and randomized width variation.
MH Groom Guide to Tube
MH Groom Guide to Tube converts guide curves into editable tube geometry, with output formats including NURBS surfaces or polygons. It is used as a foundational building module in the
Cross-section Divisions control the number of cross-section divisions of the tube. The Width Scale scales the diameter of the tube when input curves have pscale attribute defined. When input curves don’t have “pscale” attribute defined, Add Width is enabled. When Add Width is enabled, the Width attribute is set to 0.01 by default. Changing the value scales the diameter of the tube. The Width Ramp controls the diameter scale along the length of the tube.
Add Twist twists the tube around the input curve’s point tangents. Full Twists defines the number of full twists the tube is making. Detangle Width enables the option for detangling intertwined tubes to prevent intersections. Previous Width Scale scales up the intertwined tubes to make up for collision gaps while trying to prevent intersections.
Collision Thickness defines the amount of collision offset between the intertwined tubes while Collision Smooth smooths out the width scale values of the tube.
Skin Peak Distance pushes the tubes out on the surface of the skin geometry. Output allows the option to choose the type of tube geometry from either NURBS Surface or Polygons.
Attributes from Guides defines and lists all the attributes that the tube will inherit from the guides.
MH Groom Tube Fill
MH Groom Tube Fill generates and styles editable curves inside tube geometry. It offers fine-grained control over curve distribution, clumping, twisting, width shaping, and attribute output, making it ideal for structured grooms such as braids, buns, or other tube-based formations.
Under the Distribution section, curve generation settings can be distributed using either Probability or a Skin Attribute.
In the Scatter section curves distributed inside the tube can be defined by two modes: Force Total Count and Density.
Force Total Count allows for a fixed number of curves to be generated, controlled via the Curve Count parameter.
Density mode distributes curves based on a defined density value, interpreting it as curves per surface area.
Enabling Create Clumps groups curves into defined clump regions, with the number of clumps set by Clump Count. Clump-based twisting and offsetting are handled in the Twist section.
Twist By Clump toggles twist functionality, applying it to each clump around the center of the tube. Twist Angle defines the rotation in degrees, and Full Twist sets how many complete rotations each clump makes.
Push by Clump moves entire clumps outward from the tube center. Push defines the offset amount, with Push Ramp and Push Depth modulating how this push is applied along the curve and its radial position.
MH Groom Cut Root
MH Groom Cut Root randomizes the root positions of the curves. This is achieved by cutting the length of the curves starting from the root and reprojecting the root to the skin geometry. See
MH Groom Cut Root is used to introduce variation in curve root positions by trimming curves from the root and reprojecting them back onto the skin geometry. This creates subtle randomness and breakup in root placement, helping to achieve a more natural, less uniform groom.
The Range parameter defines how far from the original root the curve is cut, measured along its length and projected onto the skin. Rate controls the percentage of curves affected by the operation, specified as a value between 0 and 1. When Randomize is enabled, the single Range value is replaced with Min Range and Max Range, allowing for a variable cut distance per curve. This adds further irregularity to the root placement. The Root Projection parameter controls how the new root positions are reprojected onto the skin, shaping how the trimmed roots are integrated back into the surface.
MH Groom Rooter
MH Groom Rooter cuts and projects and spreads the curve roots to skin geometry. It’s used to create realistic looking roots for buns, braids or cornrows.
The Cut Guides option removes curve roots and any following points that are inside the skin geometry. The Cut Method parameter provides two options. Delete Points Inside Skin (faster) removes all points inside the skin but may leave parts of the curve floating above the surface.
Boolean Curves with Skin (slower) uses a boolean operation to create a new root point at the exact intersection between the curve and the skin.
Enabling Project Roots to Skin projects all curve roots directly onto the skin surface. When this is active, Expand Roots become available, allowing the roots to spread radially from their projection points before being reprojected.
Piece Attribute defines which curves are grouped and rooted together. Density Radius sets the radius of the area on the skin where roots can spread, while Density Falloff controls how strongly the spreading effect fades toward the outer edge of this radius.
The Smooth option enables post-root smoothing on the curves. This affects only the region between the original curve and the newly projected root. Smoothing Iterations determine how many times the smoothing operation is applied, and Smoothing Location specifies where along the curve the smoothing effect is focused.
Push Amount shifts the rooted portion of the curve slightly outward from the skin geometry, helping to reduce any visual penetration or clipping.
MH Groom Doctor
MH Groom Doctor is used at the end of a groom workspace to ensure that resulting curves—both strands and guides—are clean, valid, and compliant prior to export or rendering. The node scans for common grooming issues and allows you to either ignore, mark, or automatically repair each type of problem.
For every type of warning, you can choose between three actions. Ignore will skip the check entirely and not report any issues. Mark will flag the problem geometry and add it to a user-named group without applying any changes, while displaying a warning message. Repair attempts to automatically fix the problem geometry when possible.
In the Point Checks section, NaNs (Not A Number values) are identified and removed by default. These problematic points are often difficult to detect but can lead to instability. Unconnected points that do not belong to any curve are also removed. Points with a width value of zero are marked, as they may be invisible or cause rendering issues.
In the Primitive Checks, several issues are handled. Curves with zero length, which can be the result of procedural operations, are deleted. Single-point curves, which may occur when setting guide lengths, are also deleted. Curves that exceed 255 points are flagged to ensure compatibility with limitations in game engines like Unreal. Curves with overlapping root positions are identified and deduplicated, keeping only one instance. This issue is common when merging groom geometry. Overlapping thresholds can be adjusted separately for guides and strands, and the overlapping test can be toggled on or off for strands.
Curves with a width of zero across all points are deleted, as they can be virtually invisible in shading mode. Hidden curves—those hidden via the Visibility SOP or within a Guide Groom SOP—are automatically set to visible. Curves with a non-unique id attribute are corrected by overriding the id with the primitive index to maintain uniqueness. Curves with no name attribute are marked, since naming is useful for masking or partitioning but not critical. Detached curves, whose roots are not on the skin or substrate, are also marked. The threshold for detecting detached roots is adjustable with the Detached Threshold parameter.
In the Attributes & Stats Checks, curves missing the required skinprim and skinprimuv attributes are repaired by recomputing these attributes. If Recompute Skin Attributes is enabled, these will be recalculated regardless of whether they already exist. The node will also report a warning if the number of guides exceeds 3000, which is currently the recommended upper limit. Additionally, it reports a warning if the guide stream lacks a width attribute at either the point or detail level.
MH Groom Merge
This node merges groom geometry from its inputs and ensures that groom-specific attributes are preserved correctly. It combines multiple inputs into a single stream of geometry for further processing. To distinguish between different parts of the merged geometry later in the network, the Group node can be used beforehand to assign input geometries to named groups.
Clump Attribute ids are preserved and made unique when merging sets of curves with matching clump attribute names and values. The node supports merging up to 30 inputs.
Bypassing this node will result in only the first input being exported. No merge operation will be performed in that case.
MH Groom Parting Lines Merge
This node merges and processes parting lines from incoming curves, creating a unified parting line representation for use in hair interpolation and styling. It supports grouping, radius-based influence, strength control, and optional resampling to optimize performance.
The Group parameter defines which group of input curves will be used as parting lines. By default, the node looks for a group named partinglines.
Under Parting Properties, Radius sets the area of influence for each parting line, determining how far it can affect hair interpolation across the surface. Strength controls how strongly the parting line influences guide behavior. A value of 1.0 means guides on one side of the parting line may not affect hair on the other side at all, enforcing a strong separation.
MH Groom Mixer
This node blends the shape of curves between two groom inputs, allowing smooth interpolation of guide positions. It supports attribute-based matching, mask-based control, and ramp-based blending along the length of the curves, making it useful for transitioning between groom variations or layering procedural edits.
Group specifies a subset of primitives to affect. Only curves within this group will be blended.
Match Primitive By Attribute enables blending based on a matching primitive attribute, rather than relying on primitive order. This ensures that guide blending works even when the inputs are not aligned by index. The attribute used for matching is defined by Match Attribute, which defaults to id—an attribute commonly generated by grooming tools for guides and strands.
Blend controls the overall blending strength between the two grooms. This value can be overridden using a skin attribute by selecting the Skin Attribute option. When overridden, Blend Attribute specifies which skin attribute to use to drive the blend value.
MH Groom Cull
MH Groom Cull is used to selectively hide or remove curve geometry based on a wide range of criteria, including group membership, voxelization, probability, length, and various attribute values. This tool is useful for grooming workflows that require control over density, visibility, or refinement of guide or strand placement without permanently deleting geometry.
Under Selection, the Group parameter defines a subset of primitives to affect, and Keep Not Selected inverts that selection, applying operations to all curves outside the defined group.
In the Voxel section, enabling Use Voxel activates voxel-based culling. Search Points Gain sets the radius multiplier for point lookup. Voxel Size controls the resolution of the generated VDB volume - points smaller than this cannot be resolved. Point Radius Scale multiplies the particle size using the pscale attribute before converting.
Under Probability, Use Probability enables random culling. Fraction defines how many curves are affected, where a value of 1 removes all curves, 0.5 removes half, and 0 retains all. Random Seed changes the distribution of random selection.
The Length section allows culling based on curve length. Enabling Use Length activates this mode. Mode defines whether curves shorter than or longer than a specified Relative Length are culled. Length Metric controls how length is measured—either as Arc Length (along the curve) or Root To Tip (linear distance from start to end).
For attribute-driven culling, Guide Attribute allows control based on a per-guide attribute. Use Guide Attribute enables this, and Guide Attribute Name sets which attribute to use (default: cullmask).
Mode provides comparison options including Equals, Greater Than, Less Than, or Probability.
Value sets the threshold, and Random Seed introduces variation if probability is used.
Similarly, Skin Attribute allows culling by skin-level data. Use Skin Attribute toggles the feature, and Skin Attribute Name sets the input attribute (default: cullmask). Mode, Value, and Random Seed function identically to guide attribute culling.
In Clump Attribute, culling is based on clump-specific data. Use Clump Attribute enables this option, with Clump Attribute Name (default: clumpid) specifying the attribute.
Mode determines how culling is applied and includes options like Voxel, Probability, Longest, Blend Median and Longest, Centroid, and Count.
Search Points Gain, Voxel Size, and Point Radius Scale control spatial evaluation.
Fraction determines the proportion of curves culled, and Random Seed randomizes the selection. Num Curves specifies how many curves to retain per clump.
MH Groom Transfer RBF
This operator transfers hair guides from one skin geometry to another using an RBF (Radial Basis Function) interpolation method. It is particularly useful for retargeting grooms across similar topologies or UV spaces while preserving the overall structure and flow of the original groom.
Sample Points Count determines the number of points used by the RBF solver for interpolation. Higher values generally produce more accurate transfers at the cost of increased computation. A default of 1000 is recommended, though values such as 2000 or 3000 may help correct diving curves in complex transfers.
Sample Points Mask enables masking of sample point distribution. When active, a density mask is generated by transferring a float attribute from the strands or guides to the source skin. This can result in a more optimized and representative point distribution for the solver.
Match Points With defines the method for matching sample points between the source and target skins—either by UVs or by topology.
In RBF Settings, Kernel sets the type of kernel function used by the RBF interpolant. Different kernels yield different interpolation behavior and accuracy.
Solver determines the interpolation method. Fast uses a Cholesky solver, which is faster but less stable, while Robust uses an SVD (Singular Value Decomposition) solver, which is slower but delivers higher-quality results.
Damping is applicable when using the Cholesky solver. It can help stabilize the solver if it fails. Begin with a very small value like 0.00001 and incrementally increase (e.g., 0.0001, 0.001, 0.01) until the solver succeeds.
Maximum Iterations specifies how many iterations the SVD solver is allowed to perform. If the solver fails, increasing this value can help it complete successfully.
MH Groom Mirror
This node creates mirrored duplicates of the input guides.
Group defines which subset of guides will be mirrored. Only guides within this group are affected.
Keep Original determines whether the original guides are retained alongside the mirrored ones.
Mirror Group enables grouping for the mirrored guides, with Group Name specifying the name of the resulting group. The default name is mirrored.
Search Replace Name enables renaming of mirrored guide attributes, useful for maintaining naming consistency across symmetrical grooms.
MH Groom Ambient Occlusion
This node calculates an approximation of ambient occlusion (AO) on groom curves using a vertex-based method.
Ambient Occlusion can also be calculated in the MH Groom Export node.
Curve Cull Percent defines the percentage of curves to ignore before computing AO. For dense hairstyles, a higher value such as 0.8 or 0.9 is recommended, so only 10–20% of the curves are used for the AO approximation.
Width Gain multiplies the curve's width attribute to define the radius of the tube used for AO computation. A value between 2 and 3 times the width generally yields good results.
Number of Rays sets how many rays are sampled per point. Increasing this value improves quality but increases computation time.
Bias adjusts the intensity of the AO effect. Lower values produce stronger occlusion.
Maximum Ray Distance limits how far rays can travel, helping to avoid unwanted occlusion caused by distant geometry.
Cone Width controls the spread of the sampled rays. Smaller values result in narrower sampling cones and sharper falloff.
Blurring Iterations specifies how many times the AO values are blurred to smooth out the result.
Per Clump Value enables AO computation on a per-clump basis using the attribute defined in Clump ID Attribute, which defaults to clumpid.
Output Occlusion as Color (Cd) toggles whether the occlusion values are written directly to the Cd (color) attribute on points. Occlusion Attribute defines a custom name for the output attribute if Cd is not used.
MH Groom Head Attributes Mirror
This node mirrors skin attributes, based on MetaHuman head topology.
Group defines which subset of components will be affected. Mirroring is only applied to those within the specified group. Group Type specifies the type of elements included in the group (e.g., points, primitives).
Attribute Names is the list of attributes that will be mirrored across the selected axis or direction. Attribute Mirror determines the mirroring operation to apply. Options include: No Mirroring, Flip, Left to Right, and Right to Left.
MH Groom Integer To Float
This node converts integer attributes to float attributes. For example, groom regions defined by integer (whole number) attribute values can be converted into groom density maps per region, represented by float values (numbers with decimal places) in the 0.0 to 1.0 range.
Source Attribute Name specifies the name of the integer attribute to convert.
New Attribute Prefix sets a prefix for naming the new float attribute(s) generated during conversion. Initialize automates the conversion process and generates the corresponding output attributes.
Output Attributes allows manual definition of how many output float attributes will be created.
Display as Color (Cd) enables visualization of the output attribute in the Cd (color) channel on points.
Display Attribute specifies which output attribute will be shown as color when visualization is enabled.
Delete Source Attribute removes the original integer attribute after conversion, if enabled.
MH Groom Texture Blur
These parameters control the application and visualization of texture-based blurring on a mesh, with support for group masking, texture masking, and voxel-based resolution. Computes a simple box blur. Each voxel in the resulting volume has a value of the averaged sum of the neighboring voxel values. Additional remapping options allow reshaping and scaling output values using a defined value range, ramp, and interpolation method. Visualization settings enable real-time feedback in the viewport, with support for grayscale or ramp-style display.
Mesh Group specifies a group for masking. The blur operation will only be applied to primitives within this group.
Texture Name is the image file used as the texture map.
Mask Name specifies the mask that is multiplied with the texture image to apply masking. This mask will section off the area where the texture will be blurred.
Voxel Size defines the size of voxels in the generated VDB volume. For untapered volumes, all voxels use this size. For tapered volumes, it represents the voxel size at the origin of the frustum.
Iterations sets the number of blurring repetitions. Higher values produce blurrier images. The default slider range is 0 to 200. The maximum value is not limited to 200, it can be overridden by typing in the wanted number.
Toggling on Visualize texture on mesh displays the texture with the blur modifications.
The Visualization Style can be viewed in either Grayscale or Ramp.
MH Groom Attribute UV Jitter
This operator enables attribute jittering on selected primitives, allowing for more natural and varied masking. The effect can be limited to a specific group and applied in either UV or position space. Jittering methods include both random and noise-based styles, with parameters to control intensity, randomness, and seed values. Additional masking options allow jitter to be conditionally applied using fixed values or attribute-based filters for greater control and precision.
Group defines the primitives affected by the operation. Only those within the specified group will be modified.
Attribute lists the attributes to which jitter will be applied.
Method selects the input space used for jittering, either UV or Position.
UV Attribute sets the UV attribute used when UV space is selected. The default is uv, with additional options available via dropdown.
Style determines the jitter method: Random or Noise.
When the style is set to Random, Jitter sets the strength or amount of jitter applied to the attribute. Jitter Seed controls the random seed used to vary the jitter pattern.
When the style is set to Noise, the jitter is controlled by Noise Amplitude and Noise Frequency. The noise pattern can then be offset if desired on the xyz axes.
Masking offers additional controls for restricting where jitter is applied.
MH Groom Texture to Curve Mask Paint
Similar to the Texture Mask Paint node, this provides an interactive painting workflow that outputs volumetric texture data. The mask resolution is independent from the topology which allows for high resolution masks on simple geometry.
In addition to the standard parameters, the mask can be transferred as a curve attribute, and can also be remapped within the same node.
Guide Attribute Type chooses between Point or Primitive attributes. The following Texture Paint parameters are similar to the Texture Mask Paint node.
Painted masks can be further remapped using the sliders down below. Remapping can be done to the painted textures as well as along the curves.
Volumes can be combined and controlled through this node. Each new combination provides a new set of parameters determining how the sourced voxels are combined with the destination. Adjustments are applied to the source value prior to mixing into the current destination, which can save the need to pre-process volumes to get them to the correct range. Choose which volume to apply via the source section. If the destination volume is scalar, the length of the source volume is used. If the destination volume is a vector and the source a scalar, it is extended by replicating the value.
Post processing is done to all of the voxels. This does not depend on any of the blend settings - even if a voxel was untouched by the earlier combines, it will still be processed by this.
MH Groom Import
This node is used to import groom geometry from an Alembic file. It supports files exported from Houdini or other applications, provided the geometry follows the Alembic for Grooms specification. Use this node to bring external groom data into the current scene for further processing, styling, or export.
File Name specifies the path to the Alembic file containing the groom data.
Reload Geometry forces the node to reload the Alembic file from disk.
Translate, Rotate, Scale, and Uniform Scale provide optional transformations applied after import.
Guide Thickness multiplies the width of the imported guide curves.
Remove Groom Attributes deletes all attributes except for standard Houdini skin attributes and width.
Primitive Checks inspects the imported groom asset for points that overlap.
Overlapping detects guide curves with coincident root positions, which can result from merging geometry streams and are often difficult to identify. Choose one of three modes:
Ignore skips the check and performs no operation.
Mark adds overlapping guides to a user-named group and reports a warning, but does not modify the geometry.
Repair removes all but one guide at each overlapping root position.
Group sets the name of the group that will contain guides identified with overlapping roots (except the one kept during repair).
Guides Threshold defines the distance tolerance used to detect overlapping guide roots.
Strands Threshold sets the distance threshold for identifying overlapping strand roots.
Apply To Strands toggles whether the overlapping root check is applied to strands in addition to guides.
MH Groom Export (SOP)
This node exports groom curves to an Alembic file following the Unreal Engine Alembic for Grooms specification. It supports exporting both guides and strands, with full control over grouping, attribute mapping, and formatting.
See OBJ level
MH Groom Head
This operator provides standardized MetaHuman head geometry specifically designed for grooming workflows.
Additionally, in Houdini 21, custom MH head and textures can be loaded from the character folder exported from MHC. It outputs region-isolated grooming meshes, full head geometry (including eyes), and optional VDBs for collision purposes. The geometry follows naming conventions recognized by downstream systems.
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.
Head mesh → "Head" or "head"
Eye meshes → "EyeLeft", "eyeleft", "EyeRight", "eyeright"
Cartilage mesh → "Cartilage" or "cartilage"
Eye Edge mesh → "eyeEdge" or "eyeedge"
Eye Shell mesh → "eyeShell" or "eyeshell"
Skin Texture selects the texture to apply to the skin. When set to Custom, an external texture file can be used.
Texture Path specifies the file path for custom skin or eye textures.
Skin Color sets the skin tone when no texture is applied.
Eye Texture allows selection of eyeball textures. Like skin, it supports Custom input.
Iris Color and Pupil Color set color values when eye textures are not used.
Eye Shell Alpha adjusts transparency of the eye shell geometry.
UV Transform applies small UV tweaks to the eyeballs to minimize texture warping; this may need to be disabled when using certain custom textures.