Blender
GroomLab for Blender 5.2 (beta) - installation, the Groom Tools and graph editor in Blender, rendering in Cycles and EEVEE, the attributes on the hair object, and current limitations.
Beta
GroomLab for Blender is in beta. It is usable, but details may change before the first release. Keep backups of important grooms, and report problems to support@getgroomlab.com.
GroomLab for Blender provides the same grooming workflow as the Maya plug-in: the same Groom Tools (Place, Draw, Comb, Smooth, Cut, Paint, Select, Freeze...), guide groups and painted maps, a pie menu on Y in place of Maya's marking menu, and GroomLab's Graph Editor with the same node categories and presets as Maya and the GroomLab app. A groom saved from Blender evaluates to the same strands in Maya, and the other way round.
It is a Blender extension for Blender 5.2 LTS on Windows (x64), distributed from our site.
Install
Download the extension
Download GroomLab for Blender. Do not unzip it; Blender installs the zip directly.
Install from Disk
In Blender choose Edit > Preferences > Get Extensions, open the ⌄ menu at the top right and choose Install from Disk..., then pick the zip. GroomLab appears in the list, enabled.
Open the GroomLab tab
In the 3D viewport press N for the sidebar and pick the GroomLab tab.
Updates
GroomLab > Help > Check for Updates... shows the newest version and what's new; Update
downloads it and installs it over this one (restart Blender to finish). Once a day GroomLab also
checks at startup and says so in the Groom Tools when a newer version is out (turn it off in the
add-on's preferences). Both need Blender's Allow Online Access (Preferences > System >
Network). You can also add https://downloads.getgroomlab.com/blender/index.json as a remote
repository (Get Extensions > Repositories > + > Add Remote Repository) to get updates from
Blender itself.
Make a groom
- Select the mesh the hair grows on (the scalp or the whole head, at real size: a head is about 0.2 m), with a UV map.
- Choose GroomLab > Create Groom from Selection in the top bar (or Object > Create Groom from Selection, or the same button in the Groom Tools). The groom starts from the default graph, fitted to the mesh's size, as in Maya and the app; place guides with the Groom Tools, and pick a look later from the Presets menu.
GroomLab adds a Curves object <mesh>_hair parented to the mesh. It holds the evaluated
strands, is not selectable, and is rewritten whenever the groom changes. The guides are not
Blender curves: they are GroomLab's guide hierarchy (as in Maya), drawn as an overlay and edited
with the Groom Tools.
Groom Tools
The GroomLab tab of the 3D viewport's sidebar (N) opens on Groom Tools, the equivalent of Maya's Groom Tools panel, with the same sections, names and order (Maya, Blender and the app build their menus and panels from one set of definitions):
- At the top: the groom the tools work on (the Graph Editor's too; making a groom's scalp the active object makes it the groom), its eyes (show or hide the hair alone, in the viewport: renders keep it; and the guides alone: every guide group; Shift+click or right-click: every groom's), the Graph Editor and a More menu. GroomLab > Display shows or hides every groom's hair (Show All Hair, Hide All Hair) or every groom's guides. The pin in the Graph Editor's header keeps it on its groom while the Groom Tools move on.
- Your first groom walks you through placing guides and giving the groom a look.
- Group: the guide group the brushes edit and new guides go into (All groups: every guide); Isolate dims the other groups.
- Tools, Paint, Correctives and Photos tabs. The tools come by category, with Maya's icons: Create (Place, Draw, Part, Flow), Shape (Comb, Slide, Smooth, Straighten, Lift, Twist, Curl, Attract, Direction, Noise, Tube), Trim (Cut, Length, Erase), Paint (Paint) and Guides (Select, Freeze, and Unfreeze All beside them). Shift+drag with a guide brush paints guides into the selection (the rest freeze); Shift+click adds the guides in the brush ring, and where it holds none deselects and unfreezes them all. Ctrl does the brush's opposite; painting maps, Shift+drag smooths.
- The active tool's card shows what it does and exactly its settings, by Maya's names: Radius (pixels), Strength (±: tools that work both ways go negative), Falloff, Falloff curve, Root to tip, Symmetry (World X or Topology), Selected only, Pen pressure, Keep off scalp, Front facing only; Place and Draw's New guides (Match nearby guides, Length, Segments, Spacing, Solo new guides), Paint's map, Comb's Stretch, what the Shape brush Paints on the tubes (Width, Flatness or Twist), what shaping brushes act on (Guides, Parts, Flow), what Erase erases, the Part tool's next part name and its list of parts (Remove, Clear All), Flow's arrows or sinks (Whorl, Gather, Part out), how many arrows and sinks the groom keeps and Clear All (also GroomLab > Utilities > Delete All Flow Arrows), the Select tool's lasso or box and soft radius, the freeze mask. Each tool keeps its own strength.
- Undo / Redo name the groom's last edit.
- Folded below, in Maya's order: Tubes (with Place, Draw, Shape and Select), While sculpting (with the brushes that stroke; guides only while a stroke is live; full density), Guide groups & edits (Tools tab), Output (open: Export and Import menus) and Display (Blender's own).
The lists (guide groups, maps, correctives, photos) have Maya's action bar above them and Maya's right-click menu, both on a right-click over an item and behind the arrow button beside the list.
Guide groups & edits
+ New Group, then Rename, Select and Delete for the group picked in the list. The list shows each group's guides, level, eye and, when it has one, its own color. Right-click a group for New Group..., Rename, Color... (the group's viewport color), Default Color (back to its level's), Select Guides and Delete.
Edit Guides has Children (the count beside it), Sync +X → -X, Sync -X → +X, Mirror Selection (select the mirror images of the selected guides), Mirror Group... (a root group to the other side), Reparent... (the selected children under another parent, by its guide ID), Promote / Demote... and Clear Selection; then Blender's own Lock, Unlock, Freeze, Unfreeze, Unfreeze All, Delete Selected and Select All. Segments resamples the selected guides (else the picked group's, else every guide) along their smooth curve, frozen guides kept: the viewport shows it as you drag, and it is applied as one undo step when you stop. A whole group resampled keeps the count for its new guides; selected guides resampled keep a count of their own when the group's changes (resample them to the group's count to follow it again, or right-click the group > Reset Segments for all of them).
Tubes
The Tubes section edits the tubes of the selected guides (else the guides left unfrozen while the rest are frozen), and sets the tube Place and Draw give new guides:
- Shape: Round, Ribbon, Teardrop, Blade, then the groom's library of custom shapes (Mixed while the targets differ). Picking one gives it to the targets.
- Edit as Custom copies a built-in into the library. The library list adds (+), duplicates, renames and deletes shapes (deleted: its guides go round). Apply to Selected gives the targets the shape picked. (The outline editor is in Maya and the app.)
- Width, Flatness and Twist: the targets' tube, applied as one undo step when you stop dragging (Width scales the tube, its taper kept).
- Smooth evens out what the brush painted along each guide: the channel the Shape brush paints, or all three.
- Fill Tubes and Tube Blend: strands rooted in a guide's tube ride it to the tip (the graph's Interpolate nodes).
Pick a tool and drag over the groom in the viewport. The brush ring follows the cursor on the scalp in Maya's colors (yellow; red for Part and Erase, orange for Flow, green for Place and Draw) and highlights the guides it would affect. During a stroke the hair is drawn at a reduced density; the full preview density returns on release.
Keys while a tool is active
| Keys | |
|---|---|
| Ctrl + drag / click | With a guide brush: paint the selection / add the guides in the ring (the rest freeze; on none: unfreeze all) |
| Ctrl+Shift + drag | With a guide brush: lasso the selection (round none: deselect and unfreeze all) |
| Ctrl + painting | The opposite (Ctrl+Freeze unfreezes, Ctrl+Paint on the density map removes hair) |
| Shift + drag | Smooth instead |
| Shift + click | Solo the guide (the rest freeze) and brush its group; off a guide, unfreeze them all |
| B + drag, M + drag | The brush radius, the strength (Maya's hotkeys) |
| S | The Select tool (drag a lasso; Shift toggles, Ctrl deselects; click a guide) |
| Page Up / Page Down | The group a level up or down |
| Y | The pie menu |
| Ctrl+Z / Ctrl+Shift+Z | Undo / redo the groom's edits (strokes, guide edits, maps) |
| Esc or right-click | Cancel a live stroke; Esc again leaves the tool |
Navigation (middle mouse, wheel, numpad) works as always while a tool is active. Outside a GroomLab tool, Ctrl+Z is Blender's own undo.
The pie menu
Y in the viewport opens GroomLab's pie menu, laid out like Maya's marking menu: Comb at the top, Slide, Smooth, Cut, Place at the bottom, Draw, Length, Lift, and below it the rest of the tools, Select, Freeze and Groom Tools. Change its key in Edit > Preferences > Add-ons > GroomLab.
Paint maps
The Paint tab lists the groom's maps: 0-1 values (or colors) painted on the scalp that any param can read through a Map node. New Map makes one on the guides, on the scalp's vertices, or as a texture; Import... makes a texture map from an image. Pick it, take the Paint tool and paint toward the Value (a color map: the Color, in the channels ticked); Ctrl paints toward 0 (a color map: toward the inverse), Shift+drag smooths. Fill sets the map to the value or the color everywhere (a guide map: on the selected guides when some are). Show on colors the guides by a guide map, or shows the map on the scalp while painting. Read by lists the params the map feeds.
The bar's icons rename, convert and delete the picked map. Right-click it for the whole menu: Rename... (what reads it follows), Convert to (on the guides, on the scalp's vertices, or a texture at a resolution you pick), Make Gray / Make Color, Relink Image..., Reload Image (after editing it outside Blender), Show in Explorer, Delete and Delete Its File Too (on by default: deleting a texture map deletes the image GroomLab made for it).
To paint a setting, set New Map's For to Density, Width, Length, Clump strength, Curl, Noise amplitude, Flyaways (the ones the graph has a node for), or Other setting... for any mappable param, pick vertices or a texture, and click OK. A white map is created, connected to the setting, selected and painted with the Paint tool, in one undo step; if the setting already reads a map, that map is picked instead. Strokes paint toward the Value (1: the setting's full value); Ctrl paints toward 0, so Ctrl on the density map removes hair.
Correctives
The Correctives tab is Maya's stack of sculpt layers: the correctives (top of the stack first), the graph's Sculpt nodes and the Base groom. The row you pick is what the brushes edit: the base groom's guides, a corrective on top of it, or a Sculpt node's guides.
- + New adds a corrective on every frame; ◆ Fix Frame adds one on this frame, keyed in over the 6 frames before and out over the 6 after. The bar also moves the picked corrective up or down, solos it and deletes it.
- Weight is the picked corrective's weight on this frame. Its keys are Blender keyframes: ◆ keys it here, changing a keyed weight keys it on the current frame, and you can move or edit the keys in the Timeline, Dope Sheet or Graph Editor. GroomLab samples the curve on every frame.
- Right-click a corrective for Go to Its Frame, Key Weight Here, Clear Keys (every frame), Rename, Solo and Delete; right-click a Sculpt node for Clear Edits.
Photos
The Photos tab grooms to reference photos, as Maya's does. Each photo is a Blender camera with the photo as its background image, in a GroomLab References collection.
- + Import Photo... makes the camera, in front of the groom and aimed at it. Rename and Remove are beside it (the photo file stays on disk); right-click the list for the same.
- Look Through shows the photo's camera in the viewport and sets the scene's render size to the photo's, so the camera frame has the photo's shape. Click it again to go back to your view. Lock keeps the camera where it is. Opacity, Front / Back (the photo over the mesh or behind it) and the eye set how the photo shows.
- Align by Points lines the camera up with the mesh. Turn on Pick Points, then click a feature on the photo while looking through its camera, and the same feature on the mesh in another view (the pairs fill in turn and draw numbered; Esc when done). Solve finds the camera's position, rotation and focal length from 6 pairs, or from 4 with Keep focal length. Each pair shows its error in pixels, and pairs that stand out are named so you can pick them again. Right-click a pair to pick its photo or mesh point again, or delete it.
- Open Guides from Photos... (also GroomLab > Guides from Photos (experimental)...) grows guides from every photo camera into a fromReference guide group, replaced each time. Brush them like any guides; GroomLab's Undo takes them back.
The photos are saved with the groom: a .groom file saved in Blender opens with its photos in the
GroomLab app, and a groom file with photos opened in Blender gets its cameras back. The flow arrows
and mask touch-ups drawn in Maya's or the app's Photos window are kept and used; drawing
them is Maya's and the app's.
Viewport display
Guides are drawn as in Maya: each group in a color of its own (or by a painted layer), frozen
guides blue, the selection white with its soft-selection falloff orange, root and tip dots, tubes
when shown, part lines red, flow arrows orange. Display (under Groom Tools) has Maya's toggles: Guides,
Tubes, Flow, Strands, the guide points, the guide colors and the Strand Colors (Solid,
Color set, Attribute, Random, Clump, Density). Strand colors are a color attribute on the hair
(groomlab_display): Show in Viewport sets Solid shading's color to Attribute. Renders keep
the hair's material.
Presets and the graph
Presets lists the shipped looks and your own (shared with Maya and the app) by category. Apply replaces the groom's graph with the preset's, fitted to the size of your scalp (your guides stay). Insert After Node adds a preset's look (frizz, flyaways, gravity...) after the selected node, as one compound node.
Graph lists the groom's nodes, the strands' chain from the roots to the output first. Select a node to edit its params below the list:
- Params come in groups (click a group's name to open it) with the rarely needed ones folded into Advanced; params that don't apply to the node's current mode are hidden.
- Lengths and widths show in the scene's units (Blender's own unit display), densities in hairs per cm², per-length rates per scene unit, fractions as sliders. GroomLab stores centimeters, as Maya does, so a groom means the same everywhere.
- Ramps and painted maps are shown here; edit ramps in the Graph Editor (below), paint maps in Maya or the GroomLab app.
+ adds a node of the New Node type after the selected one, − removes the selected node (the chain closes over it) and the arrows move it along the chain. For the whole graph, open the Graph Editor.
The Graph Editor
Graph Editor (in the GroomLab tab's Graph panel) opens the groom's graph in a node editor of
its own, as Maya's GroomLab Graph Editor shows it. Any node editor shows it too: set its type to
GroomLab Graph and pick the groom's graph (<mesh> Graph). Choosing another groom in the
editor's header (or the GroomLab tab) shows that groom's graph.
- Nodes carry their type's ports, colored by what flows through them as in Maya: strands orange, guides blue, meshes green, fields violet, curves yellow, strands-or-guides grey. A param exposed as an input is a diamond port. Each node is tinted with its category's color (Grow, Shape, Look, Color...) and shows a couple of the params you changed.
- Add a node with Shift+A or Tab (search), by the same categories as Maya and the app (Sources, Grow, Shape, Deform, Collide, Look...), each node's description as its tooltip. Drag from a port to wire it; a wire the graph can't take (a mesh into strands, a loop) is refused and the sidebar says why. X or Delete removes nodes, Shift+D or Ctrl+D duplicates them with their params, F2 renames, M or B bypasses a node (its input passes straight through).
- V (Focus) shows the groom up to the selected node in the viewport instead of the output's; renders keep the output. On a Clump it shows its clump centers as dots on the scalp too. Set as Output makes a node the groom's output. F frames the selection, or everything.
- Every edit goes to the groom at once and the hair follows; Ctrl+Z undoes it, the graph too.
- The menus are Maya's, item for item: right-click a node for Set as Output, Focus, Bypass, Evaluate (Always, Viewport Only, Render Only), Rename, Duplicate, Expose Param as Input, a compound's Ungroup, Show Inner Param, Save as Node... and Save to Library, a script node's Edit Node..., Group Selection into Compound, Add Backdrop Around Selection and Delete. The header's Edit menu has Undo, Redo, Frame Selection, Frame All, Tidy Layout, Group into Compound, Ungroup Compound, Delete, Copy Graph, Paste Graph and Reload from Groom; Presets lists the presets (each Apply or Insert After Selected Node), Save as Preset..., Copy Graph and Paste Graph.
- Ctrl+G groups the selected nodes into one Compound node, Ctrl+Shift+G ungroups it so you can see and edit its nodes (Ctrl+Z groups them again), as in Maya. A compound is one node in Blender too, not a Blender node group: ungroup it to change what's inside, and pick which of its inner params show on it from Show Inner Param.
- Drop a node on a wire to insert it: GroomLab wires it in the way Maya does.
- Tab search lists your painted maps too: type a map's name (or "map") and pick it to add a Map node already reading it.
- Backdrops are Blender frames: Add Backdrop Around Selection (or Blender's Ctrl+J) frames nodes, and the frame's title, color (Blue, Green, Purple, Amber, Gray, as in Maya), place and size are saved with the graph, so Maya and the app show the same backdrop. Moving a backdrop moves the nodes in it.
- Copy Graph puts the whole graph on the clipboard as text (a preset with its control values); Paste Graph on another groom, in Blender, Maya or the app, fits it to that scalp.
- The Node tab of the editor's sidebar (N), the Node Settings, edits the selected node as Maya's param panel does: its name, type and what it does; its params by group (click a group's title to fold it, for every node of that type), Advanced folded; sliders over each param's usual range, which you can type past; lengths in scene units. Ramps are edited with Blender's curve widget. A node saved with an older behaviour offers Upgrade; a note (ⓘ) says when a node does nothing as set, errors show in red.
- Each param's ⌄ button opens its menu: Set Key, Delete Key and Remove Animation,
Expose as Input, Paint (on the guides, the scalp's vertices or as a texture) and Drive
with Slider. A keyed param reads a property of the groom's scalp object named
ctl_<node>_<param>(a slider's isctl_<name>): key it like any Blender property (I over it, or Set Key) and see its curve in Blender's Graph Editor and Dope Sheet; GroomLab reads it on every frame. Its values are in GroomLab's units (centimeters for lengths). - The image button beside a mappable param feeds it from a map: a texture, a color set, an
attribute, a painted map or an expression, over the range you give the map's black and
white. An expression is edited in a text block (
GroomLab <node>.<param>.expr, shown in an open Text Editor): it is checked as you type, the sidebar shows what's wrong, and the param takes it when it checks. - Script nodes: Add > New Script Node adds one after the selected node and opens its script and header in two text blocks. Each change is checked (errors with their line in the sidebar) and taken by the node when it checks. Save to Library (or Save as New) shares it with every groom, Maya and the app.
- The node library: Save as Node... saves a compound to your node library
(Documents/GroomLab/nodes, shared with Maya and the app), Import Node... copies a
.glnodesomeone shared into it and adds it, Open Nodes Folder opens the folder. A library node whose file is newer than the copy in the groom shows ↑ on its corner: Update Node takes it.
Node positions are saved with the groom, where Maya's and the app's editors keep them: a groom laid out in Blender opens laid out the same in Maya, and the other way round.
Animation
GroomLab follows a deforming scalp, from an armature or shape keys: on each frame it reads the mesh as Blender deforms it. With Follow Scalp on (the default) the groom is made on the scalp's rest pose and each strand is carried along by its root, so the hair keeps its shape as the head turns. Groom at a frame where the head is at rest.
Modifiers that change the mesh's vertex count (Subdivision Surface, Decimate...) can't be followed: GroomLab then grows on the mesh before its modifiers.
Rendering
Cycles and EEVEE render the hair object like any other Blender Curves object. A final render (F12, or an animation) uses every strand: GroomLab switches the hair object to full density for the render and back to the preview density afterwards, and turns on Render > Lock Interface for that switch.
Each point's width (a diameter) is written as Blender's per-point radius (half the width), so
Cycles and EEVEE render the same coverage as Arnold to within about a percent. EEVEE needs
Render > Curves > Shape set to Strip; its default, Strand, draws every hair one pixel wide
regardless of width. GroomLab sets Strip when you create or open a groom, and the panel warns if it
has been set back to Strand.
The hair material reproduces GroomLab's Arnold hair shader with Blender's Principled Hair BSDF, driven by the same HairColor, Bands, FeatherColor and RenderData nodes:
- Pigment: each strand's melanin and redness, with the node's dye over them.
- RGB: when the color comes from more than the pigment (a tip color, a map, hue, saturation or value randomness, a Bands or Feather Color node, a Blend of two looks), the strands' color, per point along them.
- Both, mixed strand by strand by its share, when the Hair Color node sets a Color Source; the pigment's look then varies in hue, saturation and value per strand as the RGB does.
- Iridescence: the structural color shifting with the viewing angle, mixed in where the Feather Color node puts it.
- Highlight: HairColor's specular and roughness (roughness per strand where it varies), and its opacity.
Arnold's and Cycles' hair models parameterize melanin differently, so a GroomLab Hair Color node group converts melanin, redness, dye and color to the values that render in Cycles as they do in Arnold (measured on the same grooms: average hair color within about 2-5%, comparable highlight brightness).
The hair object carries these attributes, readable in your own shaders with an Attribute node. Per-strand values use Blender's Curve domain, per-point values the Point domain:
| Attribute | Domain, type | Contents |
|---|---|---|
radius | Point, float | Half the strand width (Blender's own radius attribute) |
groomlab_strand_id | Curve, 2 x int32 | The 64-bit strand ID, split into low and high 32 bits |
surface_uv_coordinate | Curve, float2 | The scalp UV at the root (Blender's standard name) |
groomlab_color | Curve, color | Linear RGB per strand |
groomlab_point_color | Point, color | Linear RGB per point, when the color varies along the strand |
melanin, melaninRedness, specular, roughness, opacity, iridescence | Curve or Point (as the graph wrote them), float | HairColor, RenderData and FeatherColor values, when the graph writes them |
groomlab_root_normal | Curve, vector | The root normal used for iridescence (only with FeatherColor iridescence) |
Only the attributes in this table reach Blender. Other strand attributes (clumpId, Group masks,
Attribute node output) are not written to the hair object yet; export Alembic or USD to get them.
GroomLab does not modify a material you assign yourself.
What's approximate:
- EEVEE shades hair as a flat color without highlights or transmission. GroomLab gives it the color that matches Cycles' average, which is close for a full head of hair and slightly bright for light, sparse fur. Use Cycles to compare with Arnold.
- A HairColor specular below 0.2 renders a little shinier than in Arnold, and iridescence doesn't tint the highlight as Arnold's does.
- Compare colors with Color Management > View Transform: Standard (Blender's default, AgX, tones the image differently from Arnold's sRGB output).
V-Ray
With V-Ray for Blender as the render engine, a final render (F12, or an animation) renders each groom as GroomLab's V-Ray hair: the strands with each strand's color and a VRayHairNextMtl shader set up from the groom's look, the same as GroomLab's V-Ray scene export (Other renderers). V-Ray's own conversion of the hair object would lose the colors and the look. Nothing needs setting up:
- Before the render, GroomLab writes the groom (every strand) as a V-Ray scene in your temp folder
(
groomlab_vray) and renders it through a V-Ray Scene object it adds under the scalp (<scalp>_vray, hidden in the viewport). For that render the hair object is hidden; afterwards both are as they were, so Cycles and EEVEE render as before. - The hair follows the scalp: move, rotate or scale it as usual. (The scalp's scale goes into the strands themselves, since V-Ray does not scale hair widths with an object's transform; a scalp scaled unevenly gets the average of its scale.)
- Animation: with V-Ray's animation mode on, the scene holds the whole frame range as V-Ray keys. Motion blur: with V-Ray's motion blur on, it holds a frame more on each side, and V-Ray blurs between them.
- A scalp that deforms (an armature, shape keys), rendered from Blender's window, keeps the pose of the frame the render starts on for the whole animation and its motion blur.
- Interactive (viewport) rendering in V-Ray shows V-Ray's own conversion of the hair object, as a preview without GroomLab's colors and look. Use a final render to judge the hair.
- The file is temporary and written on the machine that renders: on a render farm, render the
.blendwith GroomLab and V-Ray for Blender installed on each machine.
Files
- Save Groom File As... writes the groom in GroomLab's file conventions (Y up, centimeters). Maya and the GroomLab app open it as evaluated in Blender, with the same guides.
- Import Groom File... opens a groom from Maya, the app or Blender on the selected mesh, or with the scalp stored in the file (Use the File's Scalp) when you don't have the head in Blender.
- Import > Alembic Curves... takes the selected groom's guides from an Alembic file's curves (an ImportCurves node rooted on the scalp; with a mesh selected and no groom, a groom is made on it first). The curves are read as GroomLab's and Maya's Alembic files have them: Y up, centimeters. Utilities > Bake Node to Guides... makes them guides you can brush.
- The groom remembers the file it was opened from or saved to: Save to Groom File writes it again, and Reload from Groom File reads it back (after editing it in the GroomLab app), keeping the mesh.
- A .blend file stores the whole groom (guides, groups, maps, the selection), so reopening it restores the hair and the Groom Tools state.
The GroomLab menu
The top bar's GroomLab menu is Maya's GroomLab menu, in its order, with what Blender runs: Groom Tools, Graph Editor, Create Groom from Selection, Add Sample Mesh, Guides from Photos (experimental)..., Groom Files (Import Groom File..., Reload from Groom File, Save to Groom File, Save Groom File As...), Import (Alembic Curves...), Add, Simulate, Review, Export, Utilities and Help (Docs, Keyboard Shortcuts, Check for Updates... (the newest version, installed in place), Discord, Support GroomLab, About GroomLab). Items Blender doesn't run yet are left out. Blender's File > Import and File > Export have GroomLab Groom File (.groom) too.
The Groom Tools' Output section has Simulate Range, the Export and Import menus and Transfer....
Sample meshes
Add Sample Mesh brings in Nika (a head and shoulders), Manny (a head), the Wolf or Buddy (rig) at the origin, at their real size in the scene's units, facing Blender's front, with the part to groom selected: then Create Groom from Selection. Buddy is a posable cartoon character: an armature (buddy_rig) with the body, eyes, teeth and tongue skinned to it. Groom the body, then pose the armature's bones (head, arms, fingers) and the hair follows (see Animation). Credit: "Nika head by Nick Rutlinh (GroomLab), CC BY 4.0", "Manny head by Nick Rutlinh (GroomLab), CC BY 4.0", "Wolf by Nick Rutlinh (GroomLab), CC BY 4.0", "Buddy by Nick Rutlinh (GroomLab), CC BY 4.0".
Add
Add puts the graph's building blocks in for you, as Maya's Add menu does:
- Feathers...: a feather design (contour, down, flight, afterfeather, barred, or a
feathers_<name>preset of yours), or several separated by commas with their shares in Weights. Scattered feathers (shaped by the guides) scatters them over the scalp, laid the way the guides are combed; One feather per guide (hand-placed) makes each guide of the Guide Group (feathers, another of the groom's groups, or a new name such asflight_leftortail) one feather, and the selected curve objects (drawn from the scalp, the first point the root) join that group. A group with no guides yet gets the Draw tool drawing into it. The feathers merge with the hair before the output (Hand-placed flight feathers). - Braid on Curves...: the selected curve objects become the braids guide group (without any, the group's guides are the paths: draw them with Draw), and a Braid node after the Interpolate braids the strands along them, in the style you pick (three, fishtail, rope, cornrow).
- Cards > Hero / Mid / Low: a Cards node before the output (one is made when the graph has none), set for that level of detail: hero 6 x 2 cards a clump with flyaways, mid 2 x 1, low one flat card a clump.
- Collider: each selected mesh (besides the groom) keeps the strands off it: a ColliderMesh and a Collide node before the output. The mesh follows its animation and edits: GroomLab sends it again whenever it moves or changes.
- Wind, Jiggle: a node before the output.
Simulate
GroomLab's own hair simulation runs in Blender as in Maya and the app:
- Add Simulate Node puts a Simulate node between the guides and the Interpolate: play the timeline to see it.
- Simulate Range steps the Simulate nodes over the playback range (the preview range when it is on) into their cache, so scrubbing reads it. The status bar counts the frames; Esc stops, keeping the frames made. The scalp's animation over the range (armature, shape keys) is handed to the simulation first.
- Bake Simulation simulates the range and writes each Simulate node's frames as an Alembic
guide cache in the
.blend'sgroomlab/cachesfolder (the temp folder for an unsaved file): renders, exports and groom files read the bake. - Clear Simulation drops the frames and the bakes: the next frame shown simulates again.
Transfer Groom to Scalp
Utilities > Transfer Groom to Scalp... (or Transfer... in the Output section) moves the groom onto another mesh: a new sculpt, a retopologized head, another character. Pick the New Scalp (the selected mesh by default) and the Method:
- Closest point: where the new scalp is nearest (the same place and size).
- Fit bounding boxes: the old scalp's bounds moved and scaled onto the new one's first.
- Markers: align and Markers: warp: the marker pairs stored in the groom (picked in Maya or the GroomLab app) give the move, turn and scale, or bend space onto other proportions.
- Matching UVs: both meshes laid out alike in UV; each root at its UV.
Keep guide lengths, Fit groom to the new scalp's size and Project painted maps work as in Maya. With The new scalp owns the groom (on by default) the new mesh is the groom from then on: its hair and guides objects, graph, sliders and correctives move to it, and the old mesh is a plain mesh again. The two meshes are compared in their own object space, so a new head placed elsewhere in the scene takes the groom as it sits on the old one. Ctrl+Z in Blender, or GroomLab's own Undo, puts the groom back on the old mesh.
Review and utilities
- Review > Density Heatmap colors the strands by root density; Strand Count HUD shows the active groom's strand count (and at render), guide count and evaluation time in the viewport's corner; Turntable makes a camera orbiting the groom over 120 frames with a key, fill and rim light, and the viewport looks through it.
- Utilities > Strands to Mesh... makes the strands one mesh object under the scalp: tubes (of the sides you pick) or ribbons along the scalp, UVs root to tip, at most the strands you set (thinned by strand ID).
- Utilities > Bake Node to Guides... turns a graph node's strands or guides (the groom's output, a Scatter, a ToGuides...) as they are now into guides you can brush, in a root group (baked by default: made when new, added to otherwise), at the density you pick. The Graph Editor's node menu has it too.
- Utilities > Bake Scale Maps bakes a scales groom into its skin's UVs as normal, height and
color maps (PNG, UDIM tiles too), in the
.blend'sgroomlab/bakesfolder. - Utilities > Copy Graph to Other Grooms... gives the other selected grooms the active groom's graph and slider values; their guides stay. Painted maps the graph reads that a groom lacks are listed: paint or import them there.
- Utilities > Find Missing Files... relinks the selected grooms' (else every groom's) missing texture maps, image and Alembic files and linked groom files to files of the same name in a folder you pick and its subfolders. When nothing is missing it says so, without asking for a folder.
Export
Alembic and USD export the strands (the current frame or the scene's range, every strand
by default) in GroomLab's space: Y up, centimeters for Alembic, metersPerUnit = 0.01 for USD.
Blender's importers convert both. The files carry the same attributes as Maya's exports
(Strand attributes).
The engine exports write what Maya's write (Game export), at the current frame:
- Unreal Groom...: Alembic in Unreal's groom format, strands plus the primary guides.
- Unreal Cards...: the cards as FBX with TGA maps in Unreal's hair card layout and a manifest, into a folder.
- Unity Strands (.abc)...: Alembic curves for Unity's hair package.
- Unity Feathers...: the barbs as strand groups, the rachis FBX and the Hair Asset manifest, into a folder.
- Unity Cards...: the cards as FBX (meters, Y up) with PNG maps and a manifest, into a folder.
- glTF Cards...: a
.glbwith the maps inside, or a.gltfbeside its files. - Scales Mesh (FBX)... and Scales Instancer (USD)...: a scales groom's scales bent onto the skin as one mesh, or a USD PointInstancer of their plates.
The FBX files are written with Blender's own FBX exporter from the meshes GroomLab makes.
Card Maps... bakes the groom's cards (add a Cards node to the graph first) and writes their texture maps as a preset packs them: pick the preset (the ones Maya and the app list, your own included), the resolution, format, bit depth, padding and supersampling (Export card maps). The packing table is in Maya and the app.
Not in Blender yet
- Jiggle nodes: the panel marks them. Jiggle passes the strands through in Blender (it isn't fed the scalp's earlier frames yet), so don't rely on it in a Blender render yet.
- The tube outline editor, and the Guides from Photos window (flow arrows and mask touch-ups drawn on the photo, the measured look): use Maya or the GroomLab app. Picking transfer marker points is Maya's and the app's too; Blender's transfer uses the markers stored in the groom.
- The Graph Editor's GPU preview (Maya's viewport).
- The XGen and Yeti importers (Maya): import there, save a
.groomfile and open it in Blender. - Grooms made with earlier previews keep their guides as a Blender Curves object you sculpt with Blender's Curves Sculpt brushes (Sculpt Guides); make a new groom for the Groom Tools.
- macOS and Linux builds.
- Keep the scalp object's scale at 1 (apply it): presets fit the groom to the mesh's own size.
What's open source
All of it. The add-on (its Python code) is free software under GPL-3.0-or-later. Its source is
included in the extension. GroomLab's engine runs in groomlab-helper, a separate program the
add-on starts and talks to. It is never loaded into Blender. The helper is open source too, under
the Apache License 2.0 (bin/LICENSE-HELPER.txt inside the extension), and its source is in
GroomLab's repository.