Creating realistic 3D hair is a challenging but rewarding task for artists and developers. Blender offers powerful tools to create detailed hair and fur, and Unreal Engine’s Groom System enables real-time rendering of strand-based hair with stunning fidelity. In this comprehensive guide on How to Make Blender Hair Work with Unreal Engine’s Groom System.
We’ll cover everything from hair creation in Blender (using both the traditional Hair Particle System and the new Geometry Nodes Hair Curves) to exporting via Alembic or FBX, importing into Unreal Engine, setting up materials and physics, optimization techniques for real-time hair in Unreal Engine, and troubleshooting common issues. Whether you’re a beginner or an advanced user, this guide will help you achieve high-quality, real-time hair in Unreal Engine.
Understanding Unreal Engine’s Groom System and Why It Matters
Unreal Engine’s Groom system, introduced in UE 4.26, is a strand-based hair rendering and simulation framework that significantly improves the realism of hair and fur in real time. Unlike traditional hair cards or textured polygons, the Groom system renders each individual strand of hair, offering higher visual fidelity and bridging the gap between real-time graphics and film-quality imagery. This allows for soft, wispy hair that reacts to light and movement in a more lifelike way. It includes a physically-based hair shader and integrates with Unreal’s Chaos physics for realistic hair motion.
The Groom system supports complex grooms created in DCC tools (like Blender, Maya XGen, etc.) through Alembic caches (.abc files) containing hair strand data. For scalability, it can also work with alternative hair representations (like hair cards or meshes), but using true strand data provides the highest quality. In summary, mastering the Groom system is crucial for achieving high-quality hair rendering in Unreal Engine, such as for silky human hair, furry creatures, or feather grooms.

Creating Hair in Blender: Particle Hair vs. Geometry Nodes Hair
Blender provides two main approaches for creating hair: the older Hair Particle System and the newer Geometry Nodes Hair (Hair Curves) system. Both can be used to create hair that we’ll later bring into Unreal Engine. Let’s explore each:
Hair Creation with Blender’s Hair Particle System (Legacy)
Blender’s Hair particle system is designed for strand-like objects such as hair, fur, and grass. To use it, you select the mesh (scalp or character) emitting the hair, add a Particle System modifier, and set the particle type to “Hair.” This generates hair strands from the mesh, where you can specify the number and length of the strands. By default, hair particles are static, and they have control points for smooth interpolation unless dynamics are enabled.
After adding hair, you enter Particle Edit Mode to style it interactively. In this mode, you can comb, cut, add fluff, or clump the hair, similar to grooming in other software. Particle settings can also be adjusted to influence hair behavior, such as enabling Hair Dynamics to simulate gravity and movement. However, for Unreal Engine, hair is often kept static in Blender, with physics handled in Unreal. Blender’s system also supports Children hairs, which generate extra strands to fill the volume, making the hair denser. But when exporting to Unreal, it’s usually best to disable or set children to 0 to export only the main strands.
In summary, the Hair Particle System workflow in Blender involves adding a hair particle system, specifying strand count and length, styling the hair, and adjusting settings like roughness and clumping. This straightforward method works well with Blender’s tools, and next, Blender’s new hair curves system will be explored for more procedural power.
Hair Creation with Blender’s Geometry Nodes Hair (Hair Curves)
Blender’s newer approach to hair, introduced in version 3.x, uses Geometry Nodes and a new Curves data structure, known as the “Hair Curves” system. This system treats hair as a collection of curve objects that can be generated and manipulated with node-based modifiers, offering a non-destructive, flexible workflow for hair grooming. This new system is the future of Blender’s hair/fur tools, with the old particle hair system now considered legacy.
With the Geometry Nodes hair system, you begin by adding an empty Curves object to your character or converting existing particle hair to curves. Blender provides Hair Sculpt Mode and Hair Nodes specifically for curve-based hairs. You can create guide curves on the scalp and refine the look using various Hair Nodes to clump, curl, braid, frizz, trim, and more. These nodes allow procedural adjustments that are difficult to achieve with the old system, while still allowing for combing and sculpting the curves in Sculpt Mode for artistic control.
This new hair system is powerful, similar to Maya XGen or Houdini hair tools. It enables guide hairs, children hairs via interpolation, and attaching hair to a surface that follows deformations. Visually, it looks like particle hair but is a different data type under the hood.
Exporting the new hair curves to Unreal requires extra care, as Blender’s Alembic exporter may not mark the Curves hair in a way Unreal’s Groom importer recognizes. The two main workarounds are converting the curves to particle hair, though this may be tricky, or using the “GroomExporter” Blender add-on, which exports Blender’s Curves as Alembic files with the correct Groom schema for Unreal. This add-on ensures Unreal interprets the file as a groom by including attributes like root positions and widths. While Blender’s Alembic support for hair is expected to improve, the add-on is the most reliable solution for now.
In practice, creating hair with Blender’s new system can yield excellent results, but exporting to Unreal Engine requires using the appropriate format and tools, which will be discussed further in the export section.
Exporting Blender Hair for Unreal Engine’s Groom System
When transferring hair from Blender to Unreal, choosing the right export format is critical. The two primary formats we’ll discuss are Alembic (.abc) and FBX (.fbx), each serving different needs:
- Alembic (.abc) – Best for dynamic, strand-based hair (Groom assets).
- FBX (.fbx) – Best for static hair converted to mesh (hair cards or strips).
Let’s break down each:

Exporting Hair as Alembic – The Groom Workflow
Alembic is the go-to format for exporting strand-based hair from Blender to Unreal Engine. Unreal’s Groom importer is essentially looking for Alembic files containing hair curves. When you export from Blender as Alembic with hair:
- Enable “Export Hair” in the Alembic export options. Blender will then export hair particle systems as animated zero-width curves in the Alembic filedocs.blender.org (even if the hair isn’t animated, it’s stored as curves over 1 frame). This is exactly what Unreal needs – hair represented as curves, not as mesh geometry.
- Use “Selected Objects” and “Visible Objects”: It’s advisable to select only your character (emitter) and its hair, and check Selected Objects (and Visible Objects) in the exporter. This prevents exporting extra objects by accident. For example, if the armature or other meshes are selected, Blender might include them in the Alembic file, which could confuse Unreal’s importer.
- Disable “Show Emitter” for particle hair: In Blender, turn off Show Emitter before export to hide the mesh and export only the hair curves. This ensures Unreal’s Groom importer detects pure hair data and avoids treating it as a geometry cache.
- Frame Range: Export just a single frame (e.g., frame 1 to 1) unless you intentionally want animated hair. Most often, you’ll export the hair in a static groom pose and let Unreal simulate it, so set Start and End frame both to 1 to keep the Alembic file lightweightforums.unrealengine.com.
- Scale: Set the Alembic export scale factor to 100.0 (if using default Blender units). Blender’s unit (meter) vs Unreal’s (centimeter) differ by factor of 100. Setting scale to 100 on export ensures the hair comes into Unreal at the correct sizeforums.unrealengine.com – otherwise your hair might appear 100× too small in UE.
- Viewport vs Render settings: Blender’s Alembic exporter lets you choose between viewport or final render settings. For hair, use viewport settings to avoid overly dense strands. Set the Steps parameter to around 6-7 to keep strands under Unreal’s 255-point limit, ensuring efficient and shaped hair curves.
- New Hair System Export:If using Blender’s Geometry Nodes hair, use the GroomExporter add-on to export Alembic with the correct hair data. Without it, Blender’s default Alembic may not mark the data as “groom,” causing issues with Unreal’s import.
After exporting the Alembic and importing it into Unreal with the Groom plugin, a Groom Asset is created for dynamic hair and high-quality rendering. The Alembic can include root positions and UVs, which Unreal uses for texture mapping or scalp binding. Ensure the emitter mesh has UVs and the Alembic exporter includes UVs. In Unreal, create a Groom Binding to transfer skinning and UV data, allowing materials to color the hair based on the scalp’s texture.
Exporting Hair as FBX – Static Mesh Hair (Hair Cards)
Alembic is the only method for true strand-based grooms in Unreal, but hair can also be exported as a static mesh via FBX, which is useful for real-time performance or platforms with limited strand simulation. This involves converting hair into geometry (hair cards or strips) in Blender.
- Convert hair to mesh: Blender’s particle hair can be converted to a mesh by using Convert or the Particle Instance modifier, creating hair cards from mesh strips with textured materials. For the new hair system, curves can also be converted to mesh with a curve profile or geometry nodes for thickness.
- Export FBX: Once hair is mesh geometry, export it via FBX like any static mesh. Apply transforms, check scale/unit (Blender FBX units usually work fine in Unreal), and include only the hair mesh (or the character mesh if needed). No special FBX settings are required for hair.
- No Groom plugin needed: In Unreal, FBX hair is imported as a Static or Skeletal Mesh, not using the Groom system. It’s ideal for hair that doesn’t need strand simulation but can still use bone or cloth physics. The advantage is better performance, as hair cards with fewer triangles are cheaper to render than millions of strands.
- Visual quality vs performance: Hair cards look good from a distance and are GPU/CPU-friendly, but lack the softness of grooms up close. Many artists use a hybrid approach, with cards for bulk hair and groom for details or cinematics. FBX export is a fallback if the Groom system is too heavy or unsupported.
In short, use Alembic for true strand hair in Unreal (and .abc is the only way to get “Unreal Engine Groom System export” working), and use FBX for static hair or hair cards. Now that we have our hair data exported from Blender, let’s move on to bringing it into Unreal Engine and setting it up.

Importing Blender Hair into Unreal Engine’s Groom System
With our hair exported (particularly as an Alembic .abc for groom), we can move into Unreal Engine and import it. There are a few one-time setup steps and best practices to get this right:
Enabling the Groom Plugin in Unreal Engine
Before importing any groom, ensure that the Groom plugin (often listed as “Hair Strands” plugin) is enabled in your Unreal Engine project. To do this, go to Edit > Plugins and search for “Groom” or “Hair”. Enable the Groom (Hair Strands) plugin and restart the engine if it wasn’t already enabled

In UE5, this plugin might be enabled by default for some project templates, but it’s always good to check. Without it, Unreal won’t know how to handle groom assets at all.
Once the plugin is active, Unreal’s Content Browser can import Alembic groom files.
Importing the Alembic Groom Asset
To import Blender hair Alembic into Unreal, use the Content Browser’s Import button or drag the .abc file into the Content Browser. Choose “Groom” as the import type. If exported correctly, Unreal may auto-detect it as a groom. If the Groom option isn’t available, double-check the export steps, ensuring only hair curves are present. During import, you may adjust settings like scale or rotation. After import, a Groom Asset with a green hair icon will appear in the content browser, containing the hair strand data.
Attaching the Groom to a Character:
If your hair is meant for a character (as is usually the case), the next step is to attach or bind it to that character’s mesh so it moves with them. Unreal uses a Groom Component and an optional Groom Binding Asset for this. There are two common ways to attach:
- Directly adding the Groom to a character Blueprint: Open the character’s Blueprint (or select the Skeletal Mesh) and add a Groom Component. Assign the imported Groom Asset and target Skeletal Mesh. If the hair was positioned correctly in Blender, it should align, but binding is needed for animation or pose.
- Using a Groom Binding Asset:A Groom Binding “skins” the hair to a Skeletal Mesh. Right-click the groom asset, select Create Groom Binding, and choose the target and source meshes. Assign the Binding asset in the Groom Component, and the hair will move with the character.
Unreal’s documentation states that Groom Binding assets are used to attach and skin a Groom to a Skeletal Mesh. Binding is not needed for static meshes, but is essential for skinned characters to ensure proper follow-through.
Setting up Hair Materials in Unreal Engine
By default, imported groom hair may look gray or have no specific material assigned. Unreal Engine requires a special material setup for hair rendering. You’ll want to create a hair material and assign it to the groom.
Here’s how to set up the hair material:
- Create a new Material and set the Shading Model to Hair in the Material’s Details. This activates Unreal’s hair shading (Kajiya-Kay and Marschner models) and requires inputs like Scatter and Tangent for realistic highlight coloring, which will appear as pins in the material node.
- If your hair needs transparency (for example, if you converted hair to cards with alpha textures), you’d use the Masked or Translucent blend mode. But for strand grooms, you usually keep the hair solid and let the Hair shading model handle the light scattering.
- Enable “Use with Hair Strands” in the material’s usage flags. In the material editor, search for “Usage” or find the checkbox that says “Used with Hair Strands”. Enable it so that Unreal knows this material can be applied to groom strand renderingsdev.epicgames.com. Without this, the groom may render black or not at all.
- Apply the material to the groom by opening the Groom Asset in the editor and assigning the material in the Groom Asset Editor. If the groom has multiple hair groups, assign materials accordingly. Alternatively, you can override materials in the Groom Component within a Blueprint.
A simple hair material can use a constant color or gradient, but for realism, import a hair strand texture (like those for melanin variation in Unreal’s Content Examples). The Hair shading model in UE provides realistic highlights, anti-aliasing, and pixel depth offset for strands. To improve the look, adjust the Scatter parameter or roughness. Ensure proper scene lighting for shadows, as hair strands can cast shadows in UE5, including soft contact shadows.

Enabling and Tuning Hair Physics in Unreal
One of the biggest benefits of using Unreal’s Groom system is getting real-time physics on the hair. Once your groom is imported and attached, you’ll likely want it to sway with motion, collide with the character, etc.
Unreal Engine’s hair simulation uses the Chaos physics system on the GPU for realistic motion
dev.epicgames.com. Here’s how to enable it:
- In the Groom Asset Editor, under Simulation (or Physics in UE5), you can enable simulation and adjust solver settings. By default, physics is on with stiff settings, but you can tweak properties like Hair Mass, Stiffness, Damping, and enable collision.
- Ensure the Skeletal Mesh has a proper Physics Asset with bodies for hair to collide with (e.g., head, shoulders). The groom system uses these bodies to prevent hair from passing through the character. You can also configure Capsule Shadows and physics capsules for long hair to collide with the back.
- You can also create a Groom Asset Simulation in UE (a separate asset that holds simulation settings and can be reused). This is more advanced, but Unreal allows decoupling the rendering of the groom from the simulation parameters.
- After enabling physics, press Play or simulate to see the hair move. Adjust settings like stiffness for floppy hair, damping to reduce jiggle, or constraint iterations for stability. Long hair with many segments may need higher iteration counts or substeps to prevent instability.
Unreal’s groom physics provide basic gravity and collision, adding realism, though it may not be perfect. For limp hair, check the Bone Weight or binding to ensure the roots stay attached. Hair physics can consume GPU resources, so consider optimizing or disabling simulation for distant LODs if performance drops. At this point, your Blender-created hair should be successfully imported as a Groom asset, attached to a character, rendering with a hair material, and possibly simulating. Next, we’ll discuss optimization for better performance.
Optimizing Hair Performance for Real-Time Rendering
High-fidelity hair can be one of the most performance-intensive elements in a real-time scene. A naive import of a groom (especially a dense one from Blender) could result in millions of hair vertices, which can tank framerates if not optimized. Here are strategies to optimize hair in Unreal Engine without compromising too much quality:
- Reduce Strand Count: To lighten a groom, reduce the number of strands. In Blender, use fewer parent hairs or avoid children when exporting, as they multiply strand count. In Unreal, use the Groom Asset Editor’s LOD section to decimate strands by adjusting the Curve Decimation value for each LOD. For example, setting Curve Decimation to 0.5 on LOD 0 halves the strand count, improving performance. Even small reductions can boost FPS significantly.
- Use Level of Detail (LOD): Unreal supports multiple LOD levels for groom assets, like static meshes. You can configure LOD1, LOD2, etc., with different strand counts or widths. For example, LOD0 might have 100% strands, LOD1 at mid-range could decimate to 50%, and LOD2 at far distance might switch to cards or simplified mesh. Setting up these LODs in the Groom Asset Editor is important for performance in games with camera distance changes. Adjusting Curve Decimation and Radius Scale for lower LODs helps maintain visual volume and improve performance.
- Simulate Only Guide Strands: Unreal’s hair system can simulate a subset of hairs, with the rest interpolating to save on physics cost. If available, you can import only guide hairs (e.g., 20%) and generate the rest as children in Unreal. This is more common with Maya XGen guides, while Blender exports might not distinguish guide and child strands.
- Optimize Physics: To optimize physics, reduce solver iterations or collision complexity. For less important hair, turn off collision for smaller parts or decrease simulation updates. Unreal’s GPU-based Chaos physics is scalable, but avoid excessive fine hair simulation for multiple characters at once.
- Hair Cards for Distance or Certain Hair Parts: As mentioned, you can combine approaches. Perhaps the character’s short peach fuzz and general mass of hair is a groom, but things like eyelashes, eyebrows, or very distant fuzzy characters use modeled cards or meshes. Some advanced setups even swap the entire hairstyle to a simpler static mesh at a distance (you could do this via HLODs or manual LOD switching).
- Groom Asset Settings: Some groom asset toggles affect performance, such as Scatter Scene Lighting and Use Hair Raytracing Geometry (if using ray tracing). Disabling ray tracing for hair can reduce cost. Also, check if your project’s lighting method (e.g., Lumen) is impacting performance, and turning off certain lighting features on the groom may help.
- Material Optimization: Hair materials can be heavy if overdone (lots of texture lookups, etc.). Keep hair materials simple and use the dedicated Hair shading model which is optimized for this use. Avoid overly complex material functions on each strand if possible.
Strand hair is expensive for real-time use. Groom assets are suitable for cinematics or limited use in games, but not for crowds or many characters at once. For games with many characters, use groom hair for the hero character and simpler hair for others. Detailed grooms can significantly impact performance, so balance carefully with LODs. If performance is critical, hair cards are a better alternative. Many games use hair cards, as they provide a similar look at a lower cost. Finding the right balance is key for your project. Next, common issues with Blender hair in Unreal’s groom system will be addressed.

Troubleshooting Common Issues in the Blender-to-Unreal Hair Workflow
Despite careful setup, you might encounter some hiccups when transferring Blender hair to Unreal Engine. Here are common problems and how to fix them:
- Unreal doesn’t recognize my Alembic as a Groom (no Groom import option) –Ensure the Groom plugin is enabled and export only hair curves from Blender. Check “Export Hair” in the Alembic exporter. When importing into Unreal, the dialog should show “Import Type: Groom.” If not, try exporting only the hair emitter, or use the Blender groom export add-on for compatibility.
- Imported hair is wildly out of scale or misplaced – The issue is likely unit conversion. For Blender Alembic scale 100, set Unreal’s “Conversion” to 1.0; for scale 1.0, set it to 100. Apply scale transforms (Ctrl+A > Scale) in Blender before exporting. Hair should align with the character if both were at the world origin, or adjust the groom component’s attachment if needed.
- Hair appears much different in Unreal than in Blender – Hair issues can stem from too many strand points exported from Blender, causing Unreal to truncate them. To fix this, reduce strand points in Blender. Missing children hairs can also make the hair look thinner in Unreal; increase parent strands or use the Interpolation setting. Adjust the hair material in Unreal for the correct color and glossiness.
- Hair is flickering or aliasing –To reduce strand flicker, ensure Temporal AA is enabled, adjust hair console variables, or increase the hair material’s Coverage. For cinematics, update UE to fix hair physics and TAA jitter issues.
- Hair clips through the character or has odd physics – To fix hair intersections, adjust the character’s physics asset and collision settings. For erratic behavior, reduce the simulation Time Step or Iteration count, or use per-strand simulation weights for control.
- Hair color or texture isn’t coming through – Blender’s hair material doesn’t transfer to Unreal, so you’ll need to recreate the color. To inherit color from the scalp, use Binding to store root UVs and sample them in the hair material. If UV transfer isn’t set up, use a mask texture for hair length or roots.
- Groom asset has too many vertices (engine warning or crash) – If a groom import is too heavy (millions of vertices), Unreal may struggle. You can try re-importing with downsampling settings like “Import with Guides” or “Decimate on Import” in UE5. If not, reduce strand count or length in Blender. Aim for a reasonable number of vertices, typically hundreds of thousands for hero characters.
Many of these issues can be resolved by iterating on the export/import process and using the tools provided by Unreal’s Groom Editor to tweak the hair. It’s wise to do tests with a small hair chunk first (e.g., export a subset of hair) to ensure your pipeline works, then export the full hairstyle.
Finally, let’s address some frequently asked questions about this workflow:
FAQs
- What’s the best way to export Blender hair to Unreal Engine’s Groom system?
Export hair from Blender using Alembic (.abc) with “Export Hair” enabled and emitter mesh disabled. In Unreal, set Import Type to Groom. Alembic preserves strand shapes and animation, and is the only supported format for grooms. Avoid FBX. - My Alembic file from Blender won’t import as a groom in UE – what could be wrong?
Enable the Groom plugin in Unreal. In Blender, export only hair curves by unchecking “Show Emitter” and using the GroomExporter add-on if needed. If issues persist, test with a different Unreal version or verify the Alembic in Blender/Maya. - How do I attach and bind the Blender hair groom to my character in Unreal?
After importing the groom asset, add a Groom Component to the character and assign the asset. Then, create and assign a Groom Binding asset to link the groom to the character’s skeletal mesh, ensuring the hair moves with the character. - The hair is in Unreal and attached, but it’s completely stiff. How do I enable physics?
To enable hair simulation, open the groom asset in Unreal, enable simulation in the Physics section, and adjust parameters like gravity and stiffness. Ensure the character has a physics asset and collisions are enabled in the Groom Component. Hair will simulate when you hit Play. - How can I improve performance for the groom hair?
To optimize groom hair, use LODs, reduce strand count, and simulate fewer strands. For heavy areas, consider using hair cards. Grooms are best for cinematics or limited gameplay use. Balance quality and performance by profiling your scene. - Does Unreal Engine support animated hair from Blender (e.g., a hair simulation baked in Blender)?
You can import an Alembic with hair animation into Unreal, but it’s usually for static grooms that are simulated in-engine. If imported as a geometry cache, it’s a pre-baked animation, suitable for cinematics. For interactive use, Unreal handles the simulation, and baked animations may lose simulation ability. - My character’s hair texture or color from Blender is not showing up in Unreal. How do I get the same look?
Materials don’t transfer through Alembic, so recreate the hair material in Unreal. For color variation, use a noise texture or gradient. To match the scalp texture, use a Groom Binding and sample via the hair’s root UV. Unreal requires some look development for proper shading - Should I use Blender’s new hair system or the old particle hair for Unreal Engine grooming?
Particle hair is easier to export, while geometry nodes offer more control but require an add-on. Unreal doesn’t differentiate between the two, so choose based on your needs. Beginners may prefer particle hair, while advanced users can try geometry nodes.

Conclusion
Bringing Blender hair to Unreal Engine’s Groom System enables high-quality real-time hair, fur, and feathers for interactive scenes. The process involves using Blender’s hair tools (Hair Particle or Geometry Nodes), exporting via Alembic (for strands) or FBX (for static hair), and setting up the hair in Unreal with realistic shading, physics, and optimization. Key steps include correct export formatting, using Unreal’s tools for binding, hair shaders, and performance adjustments. Avoid overloading scenes with excessive hair strands, and start simple before moving to complex grooms. With practice and community resources, mastering Blender-to-Unreal hair workflows is achievable.
Recommended
Nipsey Hussle’s Braids: A Symbol of His Legacy
What’s New in Blender 4.4: A Comprehensive Overview of Features and Improvements
How do I make the camera follow a character in Blender?
How to Download MetaHuman: The Ultimate Step-by-Step Guide to Accessing Digital Humans
How to Export MetaHuman to Blender: Comprehensive Step-by-Step Guide
How The View Keeper Simplifies Multi-Camera Animations in Blender
How do I create a depth map using the Blender camera?
Is Blender CPU or GPU Intensive? A Complete Guide to Performance in Blender
Can You Use Perspective and Orthographic Cameras in Blender?