GroomLab

Presets

Ready-made looks, and small graphs that each teach one idea.

Load one

In the Graph Editor, Presets lists them by category. Hover a preset for a one-line picture of the look; pick it to load its graph, laid out left to right (backdrops name the branches of the technique presets).

  • They fit your scalp. Presets are made on a 20 cm head. On a bigger or smaller scalp, lengths and widths scale with it, densities with its area and curls per centimeter the other way, so the look is the same on a test sphere.

  • They need guides. Most shape the hair from your guides: draw or comb a few first. The fur presets marked "no guides" follow flow arrows instead.

  • Node names explain themselves. frizzNoise is a Noise on a fraction of the strands (frizz is a Noise setting, not a node of its own); curlsControl is a slider on the groom.

  • Insert instead of replace. Each preset's submenu has Apply (the preset replaces the graph) and Insert after selected node: the preset's look, every node between its sources and its Output, becomes one Compound after the node you picked (or before the Output), fitted to your scalp, in one undo step. The Add-ons below are small looks made for it.

  • An inserted look reads as one node. The Compound shows the look's key controls on its own panel (clump strength and count, noise, curl, color, width... whatever the preset uses), with the same groups, units and sliders as the nodes inside, so you tweak the look without diving in. Edit, key or save them like any param; they set the nodes inside.

Hair

PresetWhat it shows
hair_basicsThe chain every groom builds on: Scatter, Interpolate, clumps, noise, color, width.
cinematic_hairHero hair: two clump levels, frizz on a few strands, flyaways, color variation.
wet_hairTight nested clumps and Tangle.
curlyCurl on clumped hair, and the segments curls need.
braidsBox braids with nothing to draw: AutoClump's centers become braids.
parted_styleA part drawn with the Part tool, respected by Interpolate and Clump.
sleek_longLong, straight, glossy hair: hangs under its weight, soft broad clumps, almost no frizz. Draw long guides.
mens_cutA short cut, fuller on top and tapered at the sides and nape (the taper expression's sides).
coilyType 4 coils: tight locks coiled together, kinky frizz, volume at the root.
ponytailEvery strand gathered into one tail tied high on the back of the head (tieSpot).
beardA full, coarse, slightly wiry beard, no guides. Apply it to a scalp cut from the beard area.
browsShort brow hairs sweeping out from the nose, no guides. Apply it to a scalp cut from the brows. Lashes need a lid scalp of their own.

ponytail and brows assume the usual head orientation: Y up, the face looking down +Z.

Fur

PresetWhat it shows
clumped_furDense short fur from guides, in many small clumps.
creature_furFur laid by flow arrows (no guides), soft tufts, lighter tips.
whiskers_partWhiskers from guides, and the fur parted around each whisker root by a Clump with a negative strength.
agouti_furThe creature fur in wild-type bands: dark roots, a pale band, black tips, a plain undercoat.
vellus_flowPeach fuzz from flow arrows (no guides).
flow_with_guidesFlow everywhere, guides only for tufts and accents.
long_haired_dogA long, silky coat hanging in soft waves, lighter at the tips.
woolDense, crimped fleece in springy locks, no guides.
mane_tailA horse's mane or tail: long, coarse, heavy locks from guides.

Feathers

feathers_contour, feathers_down, feathers_flight, feathers_afterfeather and feathers_barred (bars, iridescence and a downy base: Color patterns): one design each, as a Compound with its main params exposed. feathers_afterfeather shows branching inside a design: the vane, a fluffy base and its barbules are three Propagates on the same shafts, each with its own HairColor, joined by Merge. See Fur & feathers.

Scales

PresetWhat it shows
dragon_scalesScales laid out by strands: combed down the body, bigger on the back, green with darker tips, keeled plates on the back and shields on the belly, tiled and bent onto the skin.
scales_from_guidesScales pointed by your guides through Interpolate: comb or brush the guides and the scales turn with them. A Comb lays them down the body until you place guides.
scales_from_flowScales pointed by flow arrows, no guides: draw flow arrows with the Flow tool and the scales follow.
swept_spikesSpikes or quills that bend with the guides: long, narrow plates in Instance's follow strand, based on the skin and bent along their strands' curves.

Motion and games

PresetWhat it shows
wind_and_jiggleWind and Jiggle after the look, before Collide. Play the timeline.
underwater_hairA Simulate node with water: hair floating and drifting in a current, its wetness tightening the clumps and darkening it. Set waterLevel to your water.
everyday_simShoulder-length hair whose guides are simulated with calm settings. Play the timeline.
game_cardsA Cards node at the mid level of detail: Show cards, Bake Maps, export.
feather_cardsContour feathers carded one strip per feather, ready to bake and export.
card_lodsOne groom carded at the hero, mid and low levels of detail; the heroOrMid and lod switches pick one.

Techniques

PresetWhat it shows
blend_two_looksBlend mixes a sleek and a curly look; its amount is the keyable ctl_curls. Key it to animate.
merge_layersA sparse layer of longer strands with its own Scatter, merged onto the base.
switch_variationsSwitch picks a hero look or a light one (a third of the strands) by its index.
painted_mapsOne color map, three masks: R clumps, G frizz, B length. The map is made for you.
expression_drivenExpressions: longer hair at the crown (a keyable variable), harder clumps on long strands.
compound_reuseA Compound with exposed params: a look packed into one reusable node.
instancesSnowflakes on the strands with the Instance node.
leaves_on_strandsA leaf per strand, sized to span it (sizeMode fitStrand). Pick your leaf with Prototype from Selection.
secondary_clumpsStrands grown in the graph become clump centers (procedural guides).

Add-ons

Small looks meant for Insert after selected node: each adds one thing to whatever groom you have. They load on their own too.

PresetWhat it adds
wetTight clumps and a darker color: hair just out of the water.
frizzKinky noise on a share of the strands, growing toward the tips.
flyawaysA few strands leave the flow near the tip and stand out.
cards_midA Cards node at the mid level of detail; insert it before the Output.
gravityStrands hang under their weight, stiff at the root and kept off the scalp.

Save your own

Presets > Save as Preset... saves the graph, its layout and its compounds to your presets folder. Yours appear at the top level of the menu. From Python:

from groomlab import presets
presets.save_preset(groom, "my_look", about={"title": "My look", "category": "Hair",
                                             "description": "Wavy, for the lead."})
presets.apply_preset(other_groom, "my_look")

A studio can share presets through GROOMLAB_PRESET_PATH.

Choose what an inserted preset shows

A preset file may list the params its Compound shows when inserted, in an "exposed" field:

"exposed": [
  {"node": "clump", "param": "strength", "name": "clumpStrength"},
  {"node": "color", "param": "melanin", "name": "melanin"},
  {"node": "width", "param": "width"}
]

Each entry names a node of the look and one of its params; name is what the Compound calls it (the param's own name when left out, or node and param together, clumpStrength, when the Compound has that name already). Entries naming a node outside the look (its Scatter or Guides) are skipped. The panel lists them in the look's order, each with its node's slider range, unit and group. Every shipped preset with a look lists 1 to 8.

A preset without the list (yours, saved from a graph) still shows a few: one param per look node for up to six nodes, clumps, curls, noise, braids, tangles, flyaways, gravity, combs, length, color and width first, each node's first plain number param (not an advanced one, and not one read from a map, a port or a key).

Share a look as text

Presets > Copy Graph puts the groom's look on the clipboard as text: the preset Save as Preset writes, titled after the groom, in the "Shared" category, plus its control values ("controls"). Paste it in a chat, a forum or an email.

  • Paste Graph puts copied text on the groom shown, fitted to its scalp, in one undo step. Text in a code block (```json) works too.
  • Saved as a .json file in a presets folder, the text is a preset like any other: it shows under Shared, and loading it sets the control values too.
  • What does not travel: painted maps, keys, files and scene meshes stay on the machine that made them. The status bar names what this groom lacks; those nodes use their defaults.
text = groomlab.copy_graph_text(groom)
report = groomlab.paste_graph_text(other_groom, text)
print(report["message"])

On this page