UE5 expects centimetres, dual UV channels and a Hair shading model with masked alpha. Get those three right and HairStorm cards drop into any real-time character scene.
Export from HairStorm
Configure the handoff in Export Options before writing anything. The full dialog is covered in game-ready hair card export.
Scroll horizontally to view all columns.
| Setting | Use for UE5 | Why |
|---|---|---|
| Mesh format | FBX | Preserves hierarchy, normals and both UV channels. |
| Scale units | Centimetres (cm) | Matches UE5 world units; import scale stays 1.0. |
| UV channels | UV0 card geometry + UV1 atlas sampling | UV1 samples the exact atlas sub-rectangle with zero bleeding. |
| Channels to write | Albedo, Alpha, Normal, Direction, Roughness, AO, RootTip | The minimum set a UE5 hair card material samples. |
Import into UE5
-
Import the FBX
Drag the
.fbxinto the Content Browser with Import Uniform Scale at 1.0 — you already exported in centimetres. -
Confirm both UV channels survived
Open the static mesh editor and check UV Channel 0 and 1. UV0 carries card geometry, UV1 carries atlas sampling. A missing UV1 is the most common cause of smeared textures.
-
Place the groom
Drop the mesh onto your character. Cards were conformed to the scalp at groom time, so no repositioning pass in an external package should be needed.
Wire the hair material
-
Configure the material
Set Material Domain to Surface, Blend Mode to Masked or Dithered Opacity Mask, Shading Model to Hair, and enable Two Sided.
-
Wire the channels
Connect TexCoord[0] or TexCoord[1] to your texture nodes, matching the atlas layout you exported, then: Albedo to Base Color, Alpha straight to Opacity Mask, Normal to Normal, Direction to the Material Tangent input for anisotropic highlights, Roughness to Roughness, AO to Ambient Occlusion, and RootTip to drive root darkening and tip specular shifts.
-
Check at distance
Zoom out until mipmaps engage. Fringing means the atlas needs more padding — see atlas padding and mipmap bleeding.
Fix common issues
Scroll horizontally to view all columns.
| Symptom | Likely cause | Fix |
|---|---|---|
| Cards 100x too large | Exported in metres, imported as centimetres. | Re-export with centimetre units; keep import scale 1.0. |
| Flat, plastic highlights | Direction map not wired to tangent. | Connect Direction to the Material Tangent input. |
| Halo at card edges at distance | Atlas padding too small for the mipmap chain. | Raise padding and re-bake with edge dilation. |
| See-through scalp patches | Alpha in the wrong slot or Blend Mode opaque. | Alpha to Opacity Mask; Blend Mode Masked. |