Use hair cards in Unreal Engine

Make a first Unreal Engine import and check size, texture placement, and cutout transparency before building a more detailed hair material.

On this pageExport a small testOn this page
  1. Export a small test
  2. Import and compare
  3. Make a basic card material
  4. Review the result

Begin with a static test: a few placed cards and a small set of textures. Confirm the handoff before adding animation, character binding, or a project-specific hair material. Import options can vary between Unreal Engine versions.

Export a small test

  1. In HairStorm, save the project and open Export Settings.
  2. Select Albedo, Alpha, and Roughness as PNG images.
  3. Enable Groom Cards (3D Mesh) for a hairstyle already placed on the character.
  4. Choose FBX and cm (Centimeters) as a starting point for the test.
  5. Choose an output folder and click Run Export.

Choose only the mesh outputs needed by your handoff. Groom Cards are the placed hairstyle, Cards UV are the flat card layout, and Hair Strands are source hair. Format and units must match the destination.

  1. 1
    Export the placed Groom cards

    Groom Cards (3D Mesh) exports the cards arranged on the head.

  2. 2
    Export the flat card layout

    Cards UV (2D Mesh) is the atlas card layout, not the placed hairstyle.

  3. 3
    Export source hair strands

    Hair Strands (3D Mesh) is a different output from the placed Groom cards.

  4. 4
    Match format, organization, and units

    The visible example uses OBJ, Single Merged Mesh, and m (Meters). Confirm the destination's requirements.

Import and compare

  1. Import the mesh and textures

    Import the FBX into the Content Browser as a static mesh for this first check. Begin with an import scale of 1.0, then compare against the same character head rather than assuming the format alone guarantees the correct size.

  2. Compare placement and orientation

    Place the mesh beside the character. Check size, facing direction, and alignment. If they differ, check export units and the importer's conversions before moving individual cards.

  3. Inspect the UV layouts

    Open the mesh editor and inspect its UV channels. HairStorm card exports can contain an editor layout and a separate baked-atlas layout. Check which one matches the image you exported; neither channel is a universal root-to-tip layout.

Make a basic card material

This first material checks that the cards and images line up. It is not a finished hair shader.

  1. Create a material with Material Domain: Surface, Blend Mode: Masked, and Two Sided enabled.
  2. Use Default Lit for the initial check. Connect Albedo to Base Color.
  3. Connect the grayscale value from the separate Alpha texture to Opacity Mask. Do not assume the Albedo image's alpha channel contains that separate map.
  4. Connect the grayscale Roughness texture to Roughness.
  5. Use the same texture-coordinate channel for these images. Select the channel whose layout matches the exported atlas, and verify it on a recognizable bundle.
  6. Assign the material and inspect the hair from both sides.

Albedo is a color image; masks and roughness are data images. Check Unreal's texture import settings accordingly, especially if the opacity or shine looks different from HairStorm.

For transparency options and clip behavior, see the officialUnreal Engine material blend-mode guide. Masked is the blend mode; dithering is an additional material treatment, not a separate “Dithered Opacity Mask” blend mode.

Review the result

  • Solid rectangles: Check Masked mode and the Alpha-to-Opacity Mask connection.
  • Wrong bundle or smeared texture: Check the selected UV channel against the exported image.
  • Wrong size: Compare Mesh Unit, importer conversion, and the character's transforms.
  • Fine tips vanish: Check the opacity clip value and inspect the hair at its actual viewing distance.
  • Dirty borders: Follow Keep texture edges clean.

A static import does not attach the cards to an animated character. Handle binding, deformation, and the final material in the character's Unreal workflow after this test passes.

Screenshot

100%