Cards Tab
The Cards tab generates polygon hair cards from strand-based hair for use in game engines. It includes automatic clustering, UV mapping, LOD generation, and an atlas canvas that saves every texture map at full resolution.
What It Does
Hair cards replace strands with textured quads: a few hundred polygons instead of hundreds of thousands of curves, for a game engine or a real-time rig.
Changed in 1.5.1. The tab is now two halves that can be used separately:
- Card generation turns a groom into card geometry, clustered from the strands.
- The atlas is the texture those cards use. It no longer has to be baked from your groom — a block can author its own hair, so you can build a hair-card texture sheet with no groom in the scene at all.
Card Generation
Shape
| Control | What it does |
|---|---|
| Target Card Count | How many cards to aim for (10–1000) |
| Card Shape | Flat, Curved or Shell |
| Curvature | How much a Curved card bows |
| Length Segments | Subdivisions along the card (2–16) |
| Width Segments | Subdivisions across it (1–4) |
Clustering
Cards are built by grouping strands. Auto Cluster picks the count from Cluster Radius; Orientation Weight decides how much a strand's direction counts against its position (0 = position only, 1 = direction dominates). Cluster Seed re-rolls the grouping — the same groom, grouped differently.
Card width — read this if Card Width seems to do nothing
Adaptive Width is on by default, and it derives each card's width from the spread of its own cluster. While it is on, Card Width acts only as a floor (half of it), which is why moving it alone appears to do very little. Turn Adaptive Width off to make Card Width the width.
| Control | What it does |
|---|---|
| Width Multiplier | How much wider than its cluster a card is — the dominant term in an adaptive width |
| Min Card Width | Floor for an adaptive width |
| Max Card Width | Ceiling — the control that actually caps how wide a card can get |
| Coverage Overlap | How much neighbours overlap: 1.0 = cards just touch and gaps may show; 1.4–1.8 covers the scalp. Raise it if you see gaps. |
Layers and wisp types
Enable Layers classifies each card as Base (scalp cover), Volume (body) or Flyaway (silhouette), split by the Base Threshold and Flyaway Threshold strand lengths.
Reusable Wisp Types groups similar cards so they share a type — and so share an atlas block. Five to eight types is typical. Wisp Similarity sets how alike two clusters must be to share one: lower gives more types, more blocks and a busier atlas.
Flyaways, merging and LODs
- Include Flyaways generates separate cards for short stray strands, Flyaway Cards how many.
- Merge Nearby Cards collapses cards sitting almost on top of each other; Merge Threshold defines "almost".
- Generate LODs builds reduced variants. LOD Levels is how many, and LOD Reduction the fraction of cards each level keeps from the one above it.
Live
Live re-generates the cards as you change the controls, reusing the groom captured by the last Generate. The atlas partition survives, so dividers you have dragged are kept. Auto Create in Blender builds the mesh in the scene after each generation.
The Atlas
New in 1.5.1. The atlas is a canvas divided into blocks, one per card type. Click a block to select it and edit that block alone; drag the dividers between blocks to re-proportion them.
Several named atlases
- The atlas dropdown chooses which one this panel edits. Each keeps its own partition, its own per-block sources and its own name.
- New Atlas builds an empty one with the number of blocks you set, laid out as columns in one row band. It needs no groom.
- The name is also the export name: maps are written as
<name>_diffuse.png,<name>_alpha.pngand so on. - Delete removes an atlas. The last one cannot be deleted.
Resolution and quality
| Control | What it does |
|---|---|
| Atlas Size | 512, 1024, 2048 or 4096 |
| Preview 1/N | Divide the resolution while working. The preview is the same image at a smaller scale, not a different one — Save always writes full size. |
| Mip Levels | How many mip levels the atlas must survive. The gutter between blocks is 2^(N−1) texels, so 5 gives the 16 px a 2K atlas needs. |
| Strand Width (px) | Fiber thickness in atlas pixels, before Width Min/Max varies it per fiber. Too low and the per-fiber width has no room to vary. |
Viewing the atlas
- The view dropdown picks which of the ten maps the canvas shows. A map that was not baked falls back to one that was.
- Live recomposes while you drag. Only the blocks that actually moved are recomputed, so it stays cheap on a large atlas.
- Detach Atlas pops the canvas into its own resizable window, carrying the selection and the partition with it.
- Mirror to Image Editor writes every recompose into a Blender image datablock, so an Image Editor shows the atlas live with zoom, pan and pixel readout. Show in Image Editor turns the mirror on and points an open editor at it.
Saving
Save Atlas Maps writes the atlas exactly as composed on the canvas: every ticked map, at full resolution regardless of the preview divisor.
Where a block's hair comes from
New in 1.5.1. Select a block and set its Source. This is the feature that lets you build a card texture without a groom.
| Source | What it draws |
|---|---|
| Captured | This block's fibers come from the groom, as before |
| Procedural | A wisp of hair authored from the controls below — no groom needed |
| Braid | The same fibers arranged as a plait |
| Locs | The same fibers arranged as ropes |
Captured blocks
- Capture Density draws more fibers than the groom has strands, interpolating between laterally adjacent ones. A sparse groom used to bake a sparse card; 1 is the groom as it is.
- Max Strands caps the real strands sampled per card. 0 draws all of them; a low number is how a 100k groom stays interactive while you work.
- Depth Range is the depth a captured block's height map is normalised over. 0 derives it from the cluster, so a flat cluster reads as flat mid-grey instead of amplified noise.
Authored blocks: the shape of the hair
Fit to Block scales the finished fibers down until they fit inside the block; with it off, anything past the edge is clipped by the raster.
| Control | What it does |
|---|---|
| Fibers | How many hairs are drawn in the block |
| Centre | Where the wisp sits across the block; 0.5 is the middle |
| Root / Tip Spread | How wide the fibers start and finish |
| Length | How far up the block the longest fibers reach — the control that shortens the hair |
| Length Min | The shortest fibers. Below Length gives a ragged, natural end; equal to it gives a cut edge. |
| Width Min / Max | Thinnest and thickest fiber, as a multiple of Strand Width. Fibers of one identical width read as a comb. |
| Tip Taper | How much each fiber narrows toward its tip |
| Depth Spread | How much the fibers separate in depth, for the height map |
| Segments | Minimum vertices per fiber. A floor, not the count — Curl Turns raises it on its own when a curl needs more. |
| Seed | Re-roll this block's fibers |
Waves and curls
Wave is lateral wander only. Cranking it gives a flat zig-zag, not a curl. Curl is the control that makes curls — it is a helix radius in block widths, and 0 is straight hair.
| Control | What it does |
|---|---|
| Wave / Wave Frequency | Side-to-side wander and how often it repeats |
| Wave Phase | How far fibers are out of step. 0 puts every fiber in phase, which reads as a curtain rather than hair. |
| Drift | Systematic lean toward one side, growing to the tip. Half the fibers lean each way, so this is what fans a block open. |
| Curl | Helix radius in block widths |
| Curl Turns | Turns along the fiber: 1–2 is a wave, 3–6 a curl, 8+ a coil. Past that the raster runs out of texels. |
| Curl Jitter | Per-fiber variation in curl radius. 0 makes every curl identical, which reads as a machine-made wig. |
| Curl Root | How much of the fiber is spent opening up from the root. Hair does not curl straight out of the scalp. |
| Curl Coherence | How much fibers in a wisp curl together: 1 is a ringlet spiralling as one object, 0 a tangle. Needs Clumps above 0. |
Clumps and strays
- Clumps is how many wisps the fibers gather into. 0 is an even curtain; 4–10 reads as hair.
- Clump Tightness is measured as a fraction of the gap between wisps: 0.5 leaves a bundle half the gap wide with clear air either side, 1.0 pulls the tips onto a line.
- Clump Jitter gives each fiber slack, so a wisp gathers into a bundle rather than onto one line — which would rasterise as a single thick strand.
- Strays are long thin fibers past the main mass, and they are never pulled into a clump. They are cheap, and the thing that most separates an authored texture from a bake.
- Stray Length over 1.0 is clipped by the raster, which is what makes the silhouette read as broken up. Stray Width thin is the point, and Stray Wander is their sideways drift.
Braid and Locs
| Control | What it does |
|---|---|
| Braid Strands | How many strands in the plait; 3 is the classic |
| Braid Width | How far a strand swings from the centre — how wide the plait is |
| Braid Twist | Weave cycles along the block; Segments follows this on its own |
| Braid Thickness | Width of one strand's own bundle |
| Loc Count | How many ropes across the block |
| Loc Thickness | Rope diameter, in block widths |
| Loc Twist | Turns along the block |
| Loc Frizz | Fraction of fibers escaping the rope. Not decoration: a loc with a clean edge reads as a rubber tube. |
Root fade
Root Fade fades the texture in over the first fraction of the card, so the root does not end in a hard opaque line. 0.08–0.15 is usually enough; 0 is the old behaviour exactly.
Colour: pigment or ramp
New in 1.5.1. With Use Pigment Model off, cards keep the shipped constant brown. On, the fibers are coloured the way real hair is.
| Control | What it does |
|---|---|
| Melanin | 0 is white, 1 is black — the same curve as Blender's Principled Hair, so a value means the same thing in both places |
| Redness | 0 is eumelanin (brown/black), 1 is pheomelanin (red/blonde) |
| Greyness | Fraction of fibers with no pigment: 0.2 is salt-and-pepper, 0.6 mostly grey, 1.0 white. Which strands are white does not change when you re-bake. |
| Root / Tip Value | Pigment density at each end. A tip value below the root lightens the ends. |
| Root Hold | How far up the fiber the root colour holds before fading to the tip. 0 fades from the scalp; 0.35 is a typical grown-out ombre. |
| Value / Melanin / Hue Jitter | Per-fiber variation in brightness, colour and hue. Hashed from the fiber id, so they are stable across a re-bake and across resolutions. |
Use Colour Ramp Instead of Melanin colours the fibers from a ramp, root to tip. Click to add a stop, drag to move it, double-click to pick its colour, Delete to remove it — left is the root, right is the tip. Greyness still applies; Melanin, Redness and the Root/Tip values do not.
Baking Maps
Tick the maps you want, then bake. UV Padding sets the gap between UV islands in pixels, and Output Path where the files are written.
| Map | What it holds |
|---|---|
| Diffuse / Colour | Hair colour |
| Alpha / Opacity | Strand opacity mask |
| Normal | Normal map for depth |
| Flow / Direction | Hair direction, for anisotropic highlights |
| Ambient Occlusion | Contact shadow (slower to bake) |
| ID | A random ID per strand, for variation |
| Height | Per-texel depth within the block; drives parallax, and is what Depth Range normalises |
| Root/Tip | Position along the fiber, 0 at the root and 1 at the tip — the same t the pigment ramp uses |
| Specular | Per-fiber specular weight |
| Translucency | How much light passes through the fiber, for backlit hair |
Export
- Format — OBJ, FBX or glTF.
- Include Textures copies the baked maps to the export folder.
- Create Material builds a material wired to them.
- Export LODs Separately writes one file per level.
- Create in Blender builds the card mesh in your scene instead of exporting it.
Workflow
From a groom
- Build the groom, then open the Cards tab.
- Set the card count and clustering, and turn Live on to see changes as you work.
- Click Generate Hair Cards.
- Tick the maps you need and bake, or compose the atlas by hand.
- Save Atlas Maps, then Create in Blender or export.
An authored sheet with no groom
- Click New Atlas and choose how many blocks you want.
- Click a block, set its Source to Procedural, Braid or Locs, and shape it with the fiber controls. Drag the dividers to give a block more room.
- Turn the pigment model on, or use a colour ramp.
- Repeat per block — each keeps its own source and settings.
- Save Atlas Maps and use the sheet on your own cards.
A useful habit: work at Preview 1/2 with Live on, then save at full resolution when the sheet looks right.
Platform Guidelines
| Platform | Cards | Atlas | Shape | LODs |
|---|---|---|---|---|
| Mobile | 30–50 | 512–1024 | Flat | 1 |
| Console | 80–120 | 1024–2048 | Flat/Curved | 2–3 |
| PC | 150–250 | 2048–4096 | Curved/Shell | 3–4 |