2024 · Client Work · CGI Hair & Shaders

Hair Simulation

Role
Hair Simulation Workflows for Blender and UE5
Client
VML Internal use-cases
Industry
CGI Hair & Shaders
Team
Kerri O'Shea

VML needed a scalable hair simulation workflow for character based projects. I was provided with the CGI character's masks, and 3D model to develop a comprehensive pipeline. During the project, requirements shifted to prioritise Unreal Engine 5 specifically, focusing on performance optimisation for interactive and gaming use-cases.

01 — Blender

Particles to curves.

The curves stay anchored to the mesh surface through UV-based coordinate mapping on the body geometry.

I made use of particle systems within Blender in sculpt mode, then transformed the particle hair into editable Curve data. A non-destructive pipeline.

From there, the hair becomes a procedural asset that I refined through Geometry Nodes using Interpolate Hair Curves for child generation, plus styling nodes for clumping, noise, and frizz.

02 — Unreal Engine 5

Parallax Shader Graph.

Depth and volume for fur — without rendering actual geometry.

I built a parallax shader within Unreal Engine 5 Blueprints to simulate depth and volume for fur without rendering actual geometry. It uses Parallax Occlusion Mapping to offset texture coordinates based on the view angle, creating the illusion of dense, layered strands on a flat surface.

Reference

A diagram from the GFur documentation which led me to experiment with my own approaches for shell shaders.

03 — Shell Shading

Shell shader graph with wind simulation node.

Multiple semi-transparent layers stacked outward from the mesh — building volumetric fur from flat geometry.

Each layer samples a noise or strand texture with increasing offset, building up the appearance of volumetric fur. I also created versions in Blender with the Voronoi Texture worley noise node.

04 — Production Pipeline

UE5 Mask GFur Workflow.

The setup involved adding a GFur component to a skeletal mesh, and assigning a 'Grow Mesh' (which defines where fur shells generate from). The plugin uses a shell-based rendering approach with material parameters for density, thickness, clumping, wind, and ambient occlusion.

The texture maps shown control different aspects of the fur's appearance and behaviour. The blend mask (RGB composite) determines where fur grows, its length variation, and blends between density/thickness settings across different body regions. The fur pattern texture defines individual strand placement. White areas form visible strands while black areas cut through the shells.

Reusable workflows for both Blender and UE5 — deployable across character-based projects, reducing technical overhead for future interactive character work.

Documented shader experiments and provided the team with approaches for different performance requirements.

Next project

Next project

Next project

© 2026 Kerri O'Shea

© 2026 Kerri O'Shea

© 2026 Kerri O'Shea