
πΊπΈ English | π°π· νκ΅μ΄
π GroomFlow Pro Add-on Guidebook
- Welcome to GroomFlow Pro
- Welcome to the official documentation and user guide for GroomFlow Pro.
- Learn how to maximize your grooming workflow using this advanced guide-driven hair system.
π What's New in v1.8.3
- Fix: Clump Noise changed the groom when Child Resolution changed
- The break-up was drawn per POINT rather than along the strand, so adding points packed in more and more zig-zag. Going from 6 points to 64 made the strands about ten times longer and moved them 12.9 mm on average on a 17.5 cm head - and raising the resolution never settled on an answer.
- The noise is now a function of where you are along the hair, so the shape holds still: at Child Resolution 32 the groom is within 0.11 mm and 0.6% of length of the same groom at 64, and it converges from there.
- Grooms that use Clump Noise will look slightly different from before. The strength of the effect is unchanged.
- Fix: the GPU and CPU paths built different grooms with Clump Noise on
- The noise phase came from
fract(sin(...)), which keeps none of its low bits across float precisions - the two paths disagreed by more than the noise itself was worth (0.126 against an effect of 0.065). An integer hash replaces it and the paths now agree to 4e-5, which is rounding. - This showed up on machines without GPU compute, and on grooms large enough to fall back to the CPU path.
- Faster builds and lighter live ticks
- The children and the guides were stacked into one new array and then transformed into another - two full copies of every point in the groom. They are now written straight into a buffer that is allocated once and reused.
- The root snap's correction was added to a strided slice numpy cannot vectorise. It now rides along with the transform that was already being done, on a contiguous buffer: the snap stage went from 112 ms to 46 ms at a million strands.
- At a million strands a build is 321 ms down to 290 ms and a live tick 334 ms down to 277 ms. Not a single point of the groom changed value.
π Key Features Guide
- Guide-Based Strand Generation
- Creates dense hair strands from a lightweight guide curve workflow without the performance limitations of traditional systems.
- Built around a guide-to-strand generation pipeline, allowing artists to design clean guide curves while automatically generating large amounts of production-ready strands.
- Surface-Locked Strand Distribution
- Fixes the issue where traditional duplication setups cause strands to float above the surface or clip through the mesh, especially around eyebrows, beards, eyelashes, and high-curvature facial areas.
- Uses a BVHTree-powered surface projection system that snaps generated strand roots directly onto the target mesh.
- Every generated strand remains accurately attached to the skin without floating roots, gaps, or penetration issues.
- Optimized Production Workflow
- Keeps guide curves completely separated from generated output strands, providing a clean and non-destructive grooming workflow.
- Mirrors modern professional grooming pipelines while maintaining a simple Blender-native workflow for character hair, eyebrows, facial hair, fur, and Unreal Engine groom preparation.
- Designed to maximize visual fidelity while reducing manual cleanup and correction work during production.

π Installation Guide
Before starting the workflow, make sure to set up the add-on correctly by following these steps:
- Download
- Get the latest version of the GroomFlow_Pro add-on file ready.
- Installation
- Install and activate the program within Blender preferences.
- Follow the general Blender add-on installation guide.
- Install Essential Extensions
- Go to the Extensions menu inside the add-on preferences.
- Click 'Install' on the recommended base extensions to unlock full functionality.
- Preferences
- Adjust the options to fit your specific workspace layout.
1. Units & Scale
Every length in GroomFlow β strand length, thickness, child radius β is measured in metres, and the add-on converts them to whatever scale your character is actually built at. This is automatic; there is nothing to set for a normal groom.
- Why it matters
- A character exported from Unreal is authored in centimetres and then scaled down by the rig, so one metre is 100 units in its local space. A strand length of
0.5on such a character used to come out a hundred times too short, and the hair collapsed into a speck at the scalp. - GroomFlow reads the true scale off the character itself, so the same slider value gives the same real-world size on any rig.
- Units (at the top of the GroomFlow panel)
- It sits above everything else because it has to be settled before the first groom, not found afterwards. Every length in the add-on β guides, children, braid, texture masks β is a world metre multiplied by this one number.
- Auto Detect β the default. Reads the scale off the mesh the hair is bound to. Leave it here unless you have a reason not to.
- Manual β type the factor yourself. Use this when your mesh has a deliberate non-uniform scale that is part of the look rather than a unit mismatch, and you do not want it corrected.
- A line under the setting reports what was detected and which object it read, for example
1:1 (metres)or100x (Unreal / MetaHuman, cm).
Blender's hair solver is the one thing that a scaled rig still breaks, and that is a limit of the solver rather than of the units β see Section 9 β The rig's scale.
Changed in v1.8.0: Units moved from the Children panel to the top of the GroomFlow panel, and it is now one setting for the whole add-on. It used to be read by the children generator alone β the guide generator, the texture mask and the braid each measured their own scale off whichever object they happened to be holding, so Manual was ignored outside the children and a guide, its children and the head could each mean a different metre.
Upgrading from v1.5? The old Target Base Scale slider is gone β this replaces it and needs no input. If you had set it to something other than
1.0to compensate for a scaled character, that compensation is now handled for you.
Make Groom Base
An Unreal-authored character is not a comfortable thing to grow hair on. Its rig is scaled by 0.01, and Blender's hair solver reads the object's own units as metres - so 5 cm of hair is simulated as a 5 metre strand and blows up within a few frames. It is also deformed by an armature, so its shape changes under you while you comb.
Make Groom Base duplicates it as none of those things: the same surface, in the same place in the world, at scale 1, with no rig and no shape keys. Weights, UVs and materials come across, so masking and weight painting work on it. The original is untouched and hidden, and any groom already aimed at it is re-pointed at the base.
It also puts the object's origin on the character's own midline, which is what Blender's symmetric painting reflects about.
Measured on the same hair over twenty frames: 192x segment stretch on the 0.01 rig, 1.08x on the base.
2. Masking Method
Before generating hair, select which masking mode to use. The two modes are completely independent and each maintains its own separate layer list.
- Vertex Weight
- Uses a vertex group painted on the mesh to control where and how long hair grows.
- Paint red areas for full-length hair and blue areas for shorter hair or no hair.
- Best for organic shapes like scalp hair, eyebrows, and beard regions.

* Texture Mask
* Uses a painted image texture to define the hair growth area and density.
* Each layer has its own texture image, allowing multiple distinct hair regions to be managed independently.
* Best for precise, UV-based control over hair placement β for example, fur patterns or stylized hair zones.
Mirroring a Mask
Blender's X Mirror pairs a vertex with whatever sits at exactly -x, within a
tight tolerance. A MetaHuman fails that twice over: it is sculpted, so the two
halves differ everywhere by a fraction of a millimetre, and its midline is not
at local x = 0. Measured on a mesh with 2 mm of asymmetry sitting 5 cm off
centre, Blender's mirror paired 0.4% of the vertices - so it silently did
nothing. Symmetrize "works" by throwing half the character away.
GroomFlow pairs them on the data instead - it finds the mesh's own midline, reflects each vertex about it, and accepts the nearest match within a tolerance. Same mesh: 100% paired. Only weights are written; the geometry is never touched.
- Center Origin on Midline
- Puts local
x = 0on the character's midline without moving the mesh, and switches X symmetry on. Blender's symmetric painting reflects the brush about the origin, so an origin off the midline is why the mirrored cursor shows but only one side gets painted.
- Auto Mirror While Painting
- Copies each stroke onto the other side a quarter of a second after it
lands. Erasing mirrors too. Leave it off on a very heavy head and use the
button instead - both use the same pairing, so you can mix them freely.
- Mirror Weights
- Mirrors on demand: +X to -X, -X to +X, or Both, on the active group or all of them.
- The β button reports how much of the mesh pairs at four tolerances, so a bad setting is visible rather than silent.
3. Generation & Masking Panel
This collapsible panel contains the vertex group list when using Vertex Weight mode.
- When a mesh is selected, the vertex group list for that mesh is displayed.
- Use Add / Remove buttons to create or delete vertex weight groups.
- The Lock button at the top of the list prevents accidental weight changes.
- In Texture Mask mode, a note directs you to the Texture Mask Hair Layers section below.
4. Hair Curve Layers
The Hair Curve Layers panel manages the list of generated hair objects in Vertex Weight mode.
- Each entry in the list represents one generated hair curve object linked to a vertex group mask.
- Use the Up / Down arrows to reorder layers in the stack.
- Use Add to create a new empty slot, or Remove to delete the selected layer entry.
- Clicking a layer in the list automatically activates the corresponding hair curve in the viewport.
5. Texture Mask Hair Layers
This panel manages hair layers generated using Texture Mask mode. It works independently from the Vertex Weight layer list.
- Each entry represents one hair curve object driven by a specific texture image.
- Add creates a new empty texture layer slot. The slot becomes active and ready to receive a generated hair object.
- Remove deletes the selected texture layer slot.
- Texture Mask Settings β shows the image picker for the currently active texture layer. Assign or create the mask image here before generating.
- Invert Mask β inverts the brightness values of the active mask image, flipping which areas grow hair.
Texture Mask Workflow (Step by Step)
- Switch Masking Method to Texture Mask.
- Open the Texture Mask Hair Layers panel.
- Press Add to create a new layer slot.
- In the Texture Mask Settings area, assign or create a mask image for this layer.
- Press Go to Texture Paint Mode to paint the mask directly on the mesh.
- Return to Object Mode and press Mask Generate to create the hair curves.
- Repeat from step 3 to build additional independently-masked hair layers.
Each layer must have its own image assigned before generating. Generating without an image will use any existing untitled image or report a warning.
6. Strand Shape Controls
These settings control the shape and distribution of generated hair strands. Changing any value while a hair curve layer is active will automatically regenerate that layer in real time.
- Lock / Unlock
- Locks the strand controls to prevent accidental changes after a groom is finalized.
- Always lock before sculpting to protect your work from being overwritten by parameter changes.
- Min Length
- Sets the minimum length for hair grown in low-weight areas.
- Raising this value means even sparse areas produce longer strands.
- Max Length
- Sets the maximum length for hair grown in fully-weighted (red) areas.
- This is the primary length control for the densest regions of the groom.
- Guide Density
- Controls the total number of hair guide curves generated on the surface.
- Higher numbers produce denser coverage. Start lower while designing and increase for final output.
- Spawn Radius
- Controls how far each generated hair root can randomly offset from the mesh surface sample point.
- At 0.0, roots snap precisely to the surface. Increasing the value spreads roots into a wider area.
- Weight Threshold
- Sets the minimum weight value required for a point on the mesh to spawn hair.
- Raising this cuts off hair in lighter-weight zones. Lowering it below 0.01 ignores weights and spawns uniformly.
- Strand Resolution
- Specifies the number of control points making up a single hair strand.
- Higher values produce smoother, more flexible curves but increase memory and viewport load.
Warning
- Never Modify Properties After Manually Sculpting Curves
- Changing any Strand Shape value forces a complete regeneration of the hair, overwriting all sculpt edits.
- Always use the Lock button before entering Sculpt Mode to prevent accidental overwrites.
7. Thickness & Noise Settings
- Min Root Thickness
- Sets the minimum thickness for the root area of generated strands, applied in low-weight zones.
- Max Root Thickness
- Sets the maximum thickness for the root area of generated strands, applied in high-weight zones.
- Tip Thickness
- Controls the thickness at the very tip of each strand. Set near 0.0 for a natural tapered look.
- Frizz Noise Strength
- Adds random directional noise to each strand, creating a naturally messy or frizzy appearance.
- Higher values produce more chaotic, irregular silhouettes.
8. Hair Style Nodes Stack
Attach Blender geometry node modifiers to the active hair curve to shape the final look. Each button loads the corresponding node group from Blender's built-in Hair Essentials library.
- Add Clump
- Pulls groups of strands together toward common cluster points, creating natural hair clumping.
- Add Frizz
- Adds high-frequency noise breakup to individual strands for a naturally rough or frizzy texture.
- Add Interpolate
- Fills in additional strands between existing guides, dramatically increasing visible density.
- Add Duplicate
- Scatters offset copies of each strand to build up volume quickly without adding new guides.
- Add Braid
- Weaves strands into a braided rope pattern for stylized braid or twist effects.
- This is one of Blender's own style nodes. For GroomFlow's own braid, which
works on the guides and survives simulation, see Section 10 β Braid.
- Add Curl
- Applies a helical curl deformation along the length of each strand for curly or wavy hairstyles.
9. Hair Dynamics & Collision
Requires Blender 5.2 or newer. On older versions the panel says so and the buttons stay inactive.
Blender 5.2 introduced a new XPBD physics solver for hair. This panel wires it up for you and puts its settings where you can reach them β otherwise every adjustment means opening the node editor and digging inside a node group.
Buttons
- Hair Dynamics
- Select a guide curve and press this. The solver is attached and set to collide with the mesh the hair is attached to.
- Press Play on the timeline to see it simulate.
- Collider
- Select any mesh the hair should bump into β the body, a shoulder, a hat β and press this.
- The scalp itself does not need a collider; that is already handled by Surface Collision below.
- Apply Simulation to Guides
- Writes the shape the simulation has reached into the guide curves, as if you had combed it there. Blender's hair solver has no apply, so a pose you liked was only ever visible while the frame stood still.
- It can switch the solver off and return to the start frame afterwards, so the groom holds that shape instead of falling again.
- It refuses when a modifier has resampled the curves, because writing that
back would scramble the groom.
- Remove Dynamics
- Strips the dynamics and collider setup back off the selected objects.
Settings
These appear once Hair Dynamics has been added, and update the simulation as you change them.
- Physics
- On, the solver simulates. Turn it off and the hair simply follows the animation without simulating.
- Solver β Substeps, Constraint Steps
- Raise these if the hair passes through the body or stretches under fast motion. Higher values cost more to compute.
- Structure
- Bendiness β how freely the strand bends. Low is stiff hair, high is soft.
- Root Bendiness β how much it may bend right where it meets the scalp.
- Stretchiness β how much the strand may lengthen. Keep near zero for hair.
- Mass, Friction β weight and how much the strands drag on each other.
- Linear Damping β raise it if the hair jitters.
- Angular Damping β raise it if the hair whips around too freely.
- Collision
- Surface Collision β keeps the hair off the mesh it grows from.
- Deforming Surface β tick this when that mesh is rigged or animated.
- Surface Friction β how much the hair slides across it.
- Gravity β the hair falls. Turn it off for stylized or zero-gravity looks.
Recommended Workflow
- Shape your guide curves first. Dynamics simulates whatever shape you give it.
- Select the guide curve β Hair Dynamics.
- Select the body mesh β Collider.
- Play the timeline and watch. If hair passes through the body, raise Substeps; if it jitters, raise Linear Damping.
- Leave Live OFF while previewing β the children follow the simulated guides on their own (see Passive Follow in the next section).
The rig's scale, and why the simulation explodes on a MetaHuman
Blender's hair solver runs in the curve object's own local space, and treats those units as metres. On a character whose rig is scaled β a MetaHuman or any Unreal-authored figure is authored in centimetres and scaled by 0.01 β the same 5 cm of hair is 5 units long in that space, so the solver is trying to simulate what it believes is a 5 metre strand. It diverges within a few frames, and the guides shoot out of the head in straight spikes.
Measured on identical hair, in the identical place in the world, over twenty frames:
| Rig | Worst segment stretch | Result |
|---|---|---|
| 1:1, metres | 1.12x | stable |
| scaled 0.01 (MetaHuman / Unreal) | 192x | explodes |
| scaled 0.01, hair object left at scale 1 | 1.00x | stable |
It is not gravity, not collision and not GroomFlow's Units setting β with gravity and collision both switched off it still reached 43x, and raising Substeps from 10 to 100 did not help either. The only thing that matters is the world scale of the object the solver runs on.
What to do
- Apply the rig's scale (
Ctrl+A β Scale) before simulating, or - keep the hair curves object at world scale 1, so it follows the head without inheriting its scale.
The panel warns you when the groom's world scale is not 1 and tells you what it measured, so you are not left guessing at the spikes.
This is a property of Blender's solver, not of GroomFlow. Everything else in the add-on β generation, children, braid, export β already works correctly on a scaled rig; see Section 1. Units & Scale.
10. Realtime Simple Children
The Children system generates a cloud of short, naturally distributed child strands around each guide curve. Children stay synchronized with the guide in two complementary ways β a lightweight always-on follow, and an optional precise live recompute β so you get real-time feedback without paying the full performance cost all the time.
As of v1.6.0 the live recompute runs on your graphics card, roughly ten times faster than before. A status line at the top of the panel tells you which path is active:
GPU: OPENGL / <your graphics card>β the fast path is running.GPU: unavailable - using CPUβ GroomFlow checked your GPU, the result did not match, and it switched to the CPU. The groom is still correct, just slower.
To use this panel, select a hair curve object in the viewport. The panel will display the active layer name and its settings.
Setup
- Active Layer
- Displays the name of the currently selected guide curve receiving children.
- Target Mesh
- Select the body or scalp mesh that this guide curve is attached to.
- Use the eyedropper to pick the mesh directly from the viewport.
- This must be set before building children.
Buttons
- Build Children
- Generates or regenerates children for the currently active guide curve.
- Creates a
{CurveName}_Childrenobject in the scene containing all child strands, already surface-bound to the Target Mesh. - Also attaches a lightweight follow modifier that keeps children glued to whatever the guide is currently doing β see Passive Follow below.
- Press this once per guide curve. Press again to rebuild if Child Count, Radius, Clump, or Root Distribution settings change.
- Each guide curve has its own independent children object.
- Live OFF / Live ON (toggle)
- Toggles the precise real-time recompute engine used while actively sculpting or combing.
- Live ON β clump, twist, and root-scatter are fully recalculated every time the guide changes. Use this while you are actively shaping the groom with sculpt tools.
- Live OFF β the recompute engine stops running. Children are not frozen, though β see below.
- The Live Engine is shared across all guide curves. Turn it on while grooming, off when you're done shaping and just want to preview motion or simulation.
Passive Follow β children keep moving even with Live OFF
Every time Build Children runs, a small geometry-node modifier (GF_ChildrenGuideFollow) is attached to the children object. It reads the guide's current position directly from Blender's own dependency graph and offsets the children to match β no Python code runs for this, so it costs virtually nothing.
This means: if you turn on Blender's native Hair Dynamics simulation on the guide curve, or simply play back an animation that poses the character, the children will follow along even with Live OFF. This is the intended way to preview simulation or animation β leave Live OFF, let Passive Follow carry the motion, and only switch Live ON again when you want to re-shape the clump/twist detail by hand.
Passive Follow moves each child strand rigidly along with its guide's root β it does not re-run the clump/twist math. For that, use Live ON.
Recommended Workflow for Multiple Guide Curves
- Select guide curve 1 β set Target Mesh β press Build Children.
- Select guide curve 2 β set Target Mesh β press Build Children.
- Continue for all guide curves.
- While actively shaping the groom, press Live ON β clump/twist recompute live as you sculpt.
- When you're done shaping, press Live OFF. Children stay put, and Passive Follow keeps them attached if the guide is later simulated or animated.
Important: Build Children and Live Engine are separate actions. You can build children for all curves first, then enable Live once. You do not need to turn the engine on and off between each curve.
Child Strand Settings
- Child Count
- Number of child strands generated per guide curve.
- Higher values produce denser hair volume. Balance against viewport performance.
- Child Point Resolution
- Number of control points per child strand. Higher values make smoother curves.
- Guides Inside Children
- On by default. The guide curves are carried inside the children object as well, marked so Unreal can tell which strands are guides.
- This is what lets you export the children object on its own and have the complete groom β guides included β arrive in Unreal as a single asset. With it off, the guides and children stay two separate objects and a groom has to be exported twice.
- Radius
- The spread radius around the guide root where child roots are distributed.
- Small values keep children tightly grouped; large values spread them wide.
- Length Min
- Minimum length ratio of child strands relative to the parent guide. Values below 1.0 create naturally varied shorter hairs.
- Length Max
- Maximum length ratio relative to the parent guide. Values above 1.0 allow some children to extend beyond the guide tip.
Clump Settings
Controls how child strands pull toward the guide curve's tip, forming natural hair clumps.
- Clump β overall strength of the clumping pull toward the guide tip.
- Clump Start β the point along the strand where clumping begins (0 = root, 1 = tip). Below this the children stay fully spread.
- Clump Shape β how the clumping eases in between Clump Start and the tip. Low values pull the strands together early; high values hold them apart and close near the tip.
- Clump Noise β adds random per-strand variation to break up uniform clumping patterns.
- Clump Twist β rotates child strands around the guide axis as they clump, creating a spiral wrap effect. Negative values twist the other way.
- Clump Offset β shifts the point the strands converge on away from the guide tip.
Changed in v1.6.0: Clump Start used to reach full clumping by the point it names, rather than starting there β which squeezed the whole transition into the first segment or two and left a visible hook at the root. It now behaves as described above. Grooms saved with a Clump Start above 0 will look a little looser than before; raise Clump slightly to match.
Root Distribution Settings
Controls where child strand roots are placed relative to the guide root.
- Root Spread β radius of the disk area around the guide root where children are scattered. At 0.0, all children start exactly at the guide root.
- Spread Along Guide β when Root Spread is greater than 0, this stretches the scatter along the direction the guide lies in, instead of an even circle. Use it for hair that is combed flat against the scalp.
- Root Seed β random seed for the child root placement pattern. Change this to get a different arrangement without changing any other settings.
- Trim by Mask β deletes any child whose root lands outside the mask the guides were generated from. Off by default. Turn it on when a wide Radius has thrown child roots past the painted area onto bare skin. It reads the vertex group for a weight-masked groom and the mask image for a texture-masked one β whichever made these guides β so there is nothing to pick or re-assign.
- Mask Threshold β the mask value a child root needs to survive, with Trim by Mask on. This is a separate value from the guide generator's Weight Threshold, so the children can be trimmed tighter than the guides were placed, or looser. The value is read against the strongest value the mask actually holds rather than an absolute 1.0, which is why 1.0 means "only where the mask is at its strongest" even on a painted mask that never quite reaches 1.0. At 0.0 nothing is cut.
Fixed in v1.6.0: Spread Along Guide previously had no effect no matter what it was set to. It now works as described.
Clump ID
Every strand carries the ID of the clump it belongs to, stored in the hair data itself as clumpid. Unreal and other groom tools read this to keep a tuft of hair together when shading and simulating.
GroomFlow knows exactly which guide each child grew from, so its clump grouping is exact. Tools without that relationship have to guess it by clustering root positions, which splits real tufts apart and merges unrelated ones.
- Clump Size
- How many neighbouring guides share a single clump.
- At
1β the default β every guide is its own clump. Raise it to merge nearby guides into larger, chunkier tufts. - Guides are grouped by where they actually sit on the head, not by the order they were created, so a clump is always a real physical tuft.
- Clump Seed
- Reshuffles which guides fall into which clump. The number of clumps stays the same.
- This does not regenerate your groom. Combing, sculpting and every strand position are left exactly as they are β only the grouping changes β so you can keep trying arrangements on a finished groom.
- Root Clump
- A second clump profile that grips the hair near the scalp and lets go
further down, on top of whatever the main Clump is doing. Use it to close
the roots of a groom whose lengths are meant to stay loose.
- Root Clump End
- How far down the strand the root grip reaches.
- Preview Clump IDs (toggle)
- Colours every strand by the clump it belongs to and switches the viewport to Material Preview so you can see it.
- Press it again to turn it off. The preview colour, its material and your viewport shading are all put back the way they were; the clump data itself is untouched.
Hair Cut
Cut the hair the way you would with scissors: put something where it should end, and press Cut.
- Add Cutting Plane makes a wireframe plane sized to your groom and picks it as the cutter. Any object already in the scene can be used instead.
- Move and rotate it to where the hair should stop.
-
Cut.
-
Cut With β any object. A mesh with faces can cut along its real surface; anything else - an empty, a plane you have not applied - cuts along its own Z plane.
- Reads β Surface cuts where the strand actually crosses the cutter, so a plane only cuts the hair it covers. Plane extends the cutter's Z plane forever, for a straight cut right across a groom.
- Jitter β breaks the cut line up per strand. A real haircut is not a laser, and a little of this is what stops the ends reading as one flat edge.
- Keep At Least β no strand is cut shorter than this. A root left with no length disappears from the groom and takes its children with it.
The strand keeps its point count and is re-spaced over what is left, so children, clump ids, the braid and the export set all keep working. Cutting is undoable, and it only touches the strands you have selected in Sculpt mode - or all of them, when nothing is selected.
- Set Guide Resolution
- A cut shortens a strand but leaves it with the same number of points, so the tip end can come out coarse. This re-spaces the guides over a new point count without regenerating - shape, combing, cuts, clump ids and the surface binding all survive. Child Point Resolution is raised to match.
Braid
Braids the hair you have already combed, rather than generating three tubes for you to place. The braid lives on the guides; children follow it through the ordinary generation path.
Making one
- Put the 3D cursor where the braid should start β usually the nape, or wherever the hair gathers.
- Press Add Braid. Every strand that passes within Gather Radius of that point is taken into the braid, and the settings are measured off your groom rather than guessed.
- Update Braid re-solves it. Clear puts the hair back and hands it over to you; the X removes the braid from the list.
Brushing and combing a braided groom is fine. The braid records what it wrote, so your strokes survive and the weave re-forms around them.
Gather
- Gather Radius β how much hair the braid takes. The panel says how many guides that is, and how far the nearest one is when it reaches none.
- Gather Falloff β softens the edge of the gather, so the slider moves continuously instead of taking whole guides at a step, and so braided hair does not sit hard against untouched hair.
- Center β where the braid starts. It snaps onto the nearest strand when the braid is created.
Shape
- Weave β Braid is the three-strand plait. Rope is three helices twisted together. Flat keeps the three on one line that turns as it goes down.
- Braid Diameter β how far the bundles swing apart.
- Inner / Outer Diameter β how thick a bundle is at its narrowest and at its widest point. The difference between the two is the scallop along the braid's outline.
- Bulge Bias β how sharply the thickness changes between those two. At 0 the bundle keeps its Outer Diameter the whole way and there is no scallop.
- Clump Hold β how tightly hair clings to its own lock. 0 fills the bundle evenly; 1 collapses each lock onto its guide.
- Guide Attract β pulls the children onto the guides, for a clean, tidy braid.
- Knot Tightness β squeezes the braid where the strands cross. The weave already narrows there; this deepens it until each crossing reads as a knot.
- Weave Depth β adds to or takes from how far the bundles pass in front of and behind each other. 0 is the depth a plait has on its own; the bottom of the range flattens it into one plane.
- Roundness β lifts the bundles off the braid's centre line. At 0 the middle bundle passes straight through the centre, where it has no distance from the axis at all and Inner, Outer and Bulge cannot reach it β so only the outer two get shaped.
- Twist β turns of the braid's own plane over its length. A plait is flat, so without this it is wide from the front and thin from the side. Twisting makes every viewpoint the same.
- Lock Flatness β cross-section squash of each lock. This is the shape of the hair itself; use Weave Depth for how deep the braid is.
- Roll β rotates the braid's face around its own length. 0 faces away from the head.
Along the braid
- Pitch β the length of one full weave cycle. Smaller is a finer braid.
- Braid Start β where along the strands the weave begins.
- Ease In β how gradually it takes hold at that point.
- Tip Scale β how much of the braid's width is left at the tip. 0 closes it to a point.
The tail
- Tail Length β how much of the braid, measured back from the tip, is left loose below the tie. 0 braids all the way down.
- Tail Cinch β how hard the tie squeezes the hair where the braid ends.
- Tail Relax β how loosely the tail hangs. 0 keeps it gripped as a tight tassel, 1 opens it back to the braid's own width. Tied hair stays tied either way.
Loose hair
- Flyaways β the share of strands held back from the weave.
- Flyaway Length β how far those strands stand out.
- Seed β reshuffles which strands those are.
Simulation
- Hold Under Simulation (on by default) β keeps the braid woven while Hair Dynamics runs. The simulation still swings the braid; it just cannot pull the plait apart.
Clump IDs and resolution
- Set 3 Clump IDs β gives the braided hair Clump IDs 1, 2 and 3, one per strand of the plait. Hair outside the braid that already used those IDs is moved off them as a whole group. Changing Clump Size, or regenerating the guides, overwrites this β press it again afterwards.
- Add Points for This Pitch β appears when the guides are too coarse for the Pitch you asked for. A weave finer than the guides can carry does not come out coarse, it comes out wrong: narrow, flat and closer to a screw than a braid. This resamples the guides to the resolution the weave needs and raises Child Resolution to match.
11. Generation Options
- Replace Existing Hair
- When enabled, generating hair overwrites the curves in the currently active layer.
- When disabled, each generation creates an entirely new layer on top of existing ones.
- Leave this enabled during normal grooming to avoid accumulating redundant objects.
* Generate on Vertices
* Snaps and generates hair guide curve roots precisely onto mesh vertices instead of face surfaces.
* Useful for low-poly assets or grooms that require roots to align exactly with the mesh topology.
12. Process Control Buttons
Keeping Your Work When Settings Change
Changing a generation setting rebuilds the groom. It always has - and a rebuild used to throw away every comb stroke, every cut and every braid.
- Keep My Edits (on)
- Your offsets are lifted off before the rebuild and put back on after it, so the groom is regenerated with the new settings and still combed the way you left it.
- When the guide count is unchanged, they go back exactly - measured over twenty rebuilds with a braid on, the groom did not drift at all.
- When the guide count changes, each new guide takes the offsets of the
nearest old guide, sampled along its own length, so the new hair comes
out combed rather than straight.
Worth knowing: because a new guide copies its nearest old one, taking Guide Density down to 1 and back up again fills the whole groom with that one guide's shape. There is only one guide left to copy from. It is not a fault - it is what "take the nearest one" means when there is only one. If you want the groom back as generated, turn Keep My Edits off for that one rebuild, or press Generate with it off and on again afterwards.
- Auto Regenerate (on)
- Rebuilds as soon as a setting changes, the way it always has.
- Turn it off on a heavy groom: the setting is remembered, the panel says
the groom is behind, and Generate is what rebuilds. Nothing is lost
either way - this is about when the work happens, not whether it survives.
- Thickness never rebuilds at all. Vertex Min/Max and Tip Thickness only write the strand radius, so they are applied in place - not a single point moves, whatever the two switches above are set to.
Vertex Weight Mode
- Weight Generate
- Runs the hair generation algorithm using the active vertex weight group as the mask.
- Generates hair strands directly onto the mesh surface based on painted weight values.
- Red areas produce full-length hair; lower-weight areas produce shorter or no hair.
- Go to Weight Paint Mode
- Switches the active mesh into Weight Paint Mode for direct vertex weight editing.
- Paint red (weight 1.0) for dense, full-length hair and blue (weight 0.0) to suppress hair.
- Smooth Weights Gradient
- Softens sharp transitions in the active weight map into a smooth gradient.
- Prevents abrupt length changes at the boundary between painted and unpainted areas.
Texture Mask Mode
- Mask Generate
- Generates hair using the active texture layer's image as the mask.
- Bright (white) areas in the image produce hair; dark (black) areas suppress it.
- Go to Texture Paint Mode
- Switches the active mesh into Texture Paint Mode with the active mask image pre-selected.
- Paint white to add hair and black to remove it.
13. Snap Settings
- Add Snap
- Applies a Geometry Nodes-based precision snap system to the active hair curve.
- Keeps hair roots locked to the mesh surface, preventing floating or clipping even when the mesh deforms (shape keys, simulations, etc.).
- Requires a hair curve to be selected. The Target Mesh must be set in the Children panel first.

14. Unreal Engine Pipeline & Expert Synergy Workflow
Finalize your asset data blocks and prepare your grooms for cinematic export integration.
* Scale β now handled for you
* Blender and Unreal describe world scale differently, which is why imported hair so often arrives as giant sheets or microscopic pins.
* As of v1.6.0 there is nothing to calibrate. GroomFlow reads the real scale off your character and builds the groom at the correct size on both a metre-based Blender character and a centimetre-authored Unreal/MetaHuman rig. See Section 1. Units & Scale.
* If a character has a deliberate non-uniform scale you want preserved, switch Units to Manual and enter the factor yourself.
* Export the children object alone
* Leave Guides Inside Children on. The guides travel inside the children object, flagged as guides, so Unreal receives one complete groom instead of two half ones.
* The strands also carry Clump ID and their guide assignment, so Unreal's clump-based shading and simulation have the grouping GroomFlow actually used rather than a re-guessed approximation.
* Professional GroomForge Pro Synergy
* Exporting hair meshes can be tricky due to world matrix mismatches across different software spaces.
* Seamless Matrix Synchronization:
* When paired with the GroomForge Pro add-on, your separated guide and child strand layers bypass all transformation conversion issues entirely.
* Ensures a 100% flawless, automated import layout into Unreal Engine's native Groom asset system without manual repositioning.
* Performance Tip (Resolution Management)
* Optimize your setup dynamically to maintain professional-grade viewport reactivity while working on dense hair grooms.
* Real-time Efficiency:
* Lower the Strand Resolution down to 4 or 6 while designing massive hairstyles to maximize your viewport FPS smoothness.
* Simply bump it back up to 12 right before rendering final frames in Cycles or executing your absolute groom exports to Unreal Engine.
