Tutorial — Hair Cards and Groom LODs for Headsets

Augmented Traveler local tutorial. Back to Grooms — Tutorials · profiling: Tutorial — Performance Profiling · groom source: Tutorial — XGen Period Hair for MetaHuman · headset builds: Quest — Tutorials

Strand hair looks right on the kiosk but does not run on Quest, Android XR or phones. This tutorial sets up groom LODs so each surface gets strands, cards or meshes, generates cards with the Hair Card Generator, and tests the result.

Draft. Written from Epic's UE 5.8 groom docs. The Hair Card Generator is Experimental ("use caution when shipping with it"). Budgets below are our starting targets, not Epic figures. Correct menu names here after the first run.

1. What runs where

Geometry Platforms (Epic) Our surfaces
Strands Windows (DX11, DX12, Vulkan), macOS (SM6 on M2+), Linux, PS5, Xbox Series Kiosk (RTX 5090), PC-VR, Pixel Streaming server
Cards All platforms Quest 3, Android XR, phones, Vision Pro (test)
Meshes All platforms Phones and far LODs; bun or cap-covered hair

2. LOD plan per groom

Set this in the Groom Asset Editor → Level of Detail panel (Geometry Type per LOD).

LOD Geometry Used by Notes
0 Strands Kiosk close-up Full density
1 Strands (decimated curves) Kiosk mid, PC-VR Curve decimation in the LOD settings
2 Cards (high) Quest 3 close, Vision Pro From the Hair Card Generator
3 Cards (low) Quest far, phones Fewer clumps; reduce from LOD 2
4 Mesh Phones far, fallback Solid mesh with coverage texture

Per-platform minimum LOD: in the LOD panel, use Add (+) to add a platform override and set a Minimum LOD (for example Android minimum LOD 2), so strands are never selected on headsets. The Groom component also has LOD Bias and a Use Cards option to force cards.

Cap-covered figures: build the LODs from the capped groom (Tutorial — Hair Under Caps and Bonnets).

3. Generate cards (Hair Card Generator, Dataflow)

  1. Plugins: Edit → Plugins → enable Hair Card Generator, plus Editor Dataflow Graph and Geometry Dataflow. Restart.
  2. Right-click the Groom Asset → Create Dataflow Asset → choose the Cards template. The graph includes GroomAssetToCollection, BuildCardSettings, GenerateCardsClumps, GenerateCardsGeometry, GenerateCardsTextures and CardAssetTerminal.
  3. In BuildCardSettings, add one element per card LOD. Set its LOD Index (2, then 3).
  4. Add filters per group so the bands, bun and flyaways get separate budgets:
    • Num Clumps: card count and width. Bands need more, narrow cards; the bun can use fewer.
    • Num Triangles: triangle budget per filter.
    • Num Textures: unique texture islands.
    • Num Flyaways: single-strand cards. Keep very low for oiled period hair.
    • Multi Card Clumps: three cards per clump for volume. Try it on the bun only.
  5. Advanced Options: set Texture Atlas Size and choose to reduce cards from the previous LOD for LOD 3.
  6. Evaluate the graph. Inspect clumps and textures in the Construction Viewport.
  7. In the Groom Asset details, set that LOD's Geometry Type to Cards.
  8. In the Cards panel check the textures (Depth, Coverage, Tangent, Attributes, Color/Roughness), the Material, Group Index and LOD Index.

Chaos Hair (5.8). The release notes list "Card generation to skeletal mesh", Nanite-compatible rendering and simulation, and expanded attribute painting and skin weighting. No 5.8 how-to page was found; unconfirmed; check on first use whether carded hair as a skeletal mesh suits Quest better than groom cards.

For facial hair, generate cards per beard group (Tutorial — Period Facial Hair Grooms).

4. Starting budgets (ours; adjust after profiling)

Surface Hair triangles (all grooms) Card atlas Notes
Quest 3 / Android XR Target under ~20k 1× 2048² set, shared across groups Test ASTC compression on hair alpha edges
Phones Target under ~10k 1024²–2048² Mesh LOD for far views
Vision Pro As Quest to start 2048² Test before raising

These are not from Epic. Measure with Tutorial — Performance Profiling and replace them.

5. Material and look on cards

6. Kiosk strand cost

Strands on the kiosk still need checks:

7. Test

  1. Package a Quest build (Tutorial — Performance Profiling for the steps and stat commands).
  2. Confirm the card LOD is active (no strands on device).
  3. Check at 1 m and 3 m: parting line, ear bands, bun silhouette.
  4. Check with speech and a head turn: no card lag at the hairline or jaw.
  5. Record GPU time for hair before and after each change.

8. Practice exercise

Generate LOD 2 and LOD 3 cards for Mitchell's 1847 groom with two settings: (a) default clumps, (b) double clumps on front_bands, half on bun. Compare triangle counts and the parting at 1 m on Quest.

9. Check before a headset build

Sources