Natalie Jerabek guided us through the process of creating a traditional Chinese hairstyle, detailing her workflow in Blender using the Hair Tool add-on.
Introduction
Hi, I'm Natalie Jerabek, a 3D Character Artist originally from Austria. I started my 3D art journey only two years ago, after feeling a bit burned out from my previous career as a UI/UX Designer. I realized it wasn't creative or technically challenging enough for me, so I decided to try something new and different.
At that time, I was already spending most of my free time playing games, especially customizing, fine-tuning, and styling characters. So I thought, why not give it a try by studying 3D at Think Tank Training Centre? Honestly, I feel very lucky because I immediately fell in love with it and knew this was what I wanted to do. Looking back, it feels almost like a crazy decision, I had never touched 3D software before, but jumped into it based on a feeling that I would like this!
As for industry experience, apart from starting to take freelance projects, I don't have any yet. Because of a wrist injury, I had to work on and off for a bit more than half a year. Basically constantly pausing my project whenever the pain flared up. I'm only now finally getting back on track and finishing one of my portfolio pieces, which I hope will help me land a job in the industry soon. So most of my skills so far come from my time at Think Tank, learning from supervisors, mentors, and fellow students, as well as from many intense self-taught deep dives into different areas, like hair.
The Traditional Chinese Hairstyle Project
The groom project I'm breaking down here is part of a larger portfolio project. Due to the mentioned injury, into smaller tasks and working more slowly than expected. Therefore, I decided to take some time to only focus on the hair and post it as a separate project. The hairstyle is based on a 2D concept by Arbor, inspired by traditional Chinese styles.
I believe well-made hair adds a lot to a character's presentation, personality, and overall look. Especially with haircards, it can be tricky to achieve a realistic feeling, but they offer much more control over the final result. Like many character artists, hair isn't my favorite part of the process, so my main goal was to find a workflow that was fast, simple, and enjoyable.
Most tools focus on placing haircards with curves, but I personally dislike that approach. As it's tedious, and iterating on already placed cards takes a lot of effort. My mentor, David Kuo, introduced me to a Blender add-on called Hair Tool. Which at first looks more technical but is actually much more artist-friendly. In my opinion, it is like XGen for hair cards.
Here is a quick overview of the steps in my workflow:
- Reference gathering;
- Blockout and sculpt;
- Texture creation;
- Haircard placement;
- Material setup and rendering.
Arbor
References
Before starting on the hair, I think it's important to understand the hair type, style, and flow. I gathered many references of Asian hair and historical hairstyles, including buns. To study the flow, I draw over references to analyze where direction changes occur, how hair clumps, how layers overlap, how the flow is broken by flyaways, etc., and how gravity pulls it downward.
I also drew over the 2D concept to understand the differences between real hair and a more 2D or stylized version. Noticing, for example, how the concept's hair had more extreme directional changes and waviness, while real hair was more subtle.
Blockout & Sculpting
My character initially had a messy hair blob, so the next step was properly blocking out and sculpting the hairstyle. The goal was to use this sculpt or its low-poly version as a guide for placing hair cards. While also generally translating the concept into a 3D space, keeping in mind the more realistic aspects of it.
For the sculpt, I used ZBrush, mainly curve tubes with tapered ends. This gave me an easy way to manipulate strands, especially those blown around by the wind. I kept one version of the low-poly curve tubes and also created a DynaMeshed version, sculpting details on top with The Gio and Dam Standard brushes. For volume and details, I took inspiration from Veronika Neklyueva's tutorial and referenced other 3D sculpts:
Texture Creation
I created the textures in FiberShop, as it's fast and easy to create textures and iterate on them. While building them, I planned for the different layers and sections of the hairstyle.
Back, and tied back hair: longer cards with stronger waves and noise, these will be stretched out due to the length, and add to a more natural look. Bangs, bun, breakup: shorter textures for those sections, as well as for breakup. Baby hair, and flyaways: some very short, mostly transparent textures for fine detail.
The density of the cards keeps the layers in mind: opaque dense cards, semi-sparse cards, sparse ones, and almost transparent single-strand cards.
Hair Card Placement
To create and place different strands of hair cards, I used the Blender addon Hair Tool. It works by building "hair systems", groups of cards with shared parameters, which can be applied across multiple strands at once. This makes iteration much faster, since settings only need to be adjusted once, and they update everywhere. Later, each strand or system can still be made unique by tweaking textures or deformers, ensuring the hairstyle doesn’t look repetitive.
One of the biggest advantages is that hair systems can be applied directly to existing geometry, so the cards naturally follow the surface. This means you can sculpt, rotate, or move the underlying geometry to instantly change the flow and direction of the assigned cards. The result is a workflow that allows for both quick iteration and a more artistic, sculpt-driven approach.
Since Hair Tool is still relatively unknown, I'll explain in detail how I used it for each hair layer. For clarity, find some terminology below or check out the official documentation.
Terminology in Hair Tool:
- Hair system: a set of subsystems;
- Subsystem: a set of cards with deformers/parameters;
- Deformers: parameters that affect look (alignment, taper, noise, tilt, etc.);
Base Preparation
To place the haircards, I went back to the low-poly of the sculpt. It gives the desired hair flow, but consists of the separated curve tubes. I took one or more edges on each curve tube/cylinder and converted those into flat geometry.
In the end, I only used a few of the meshes, duplicating and sculpting them into place for efficiency instead. However, it left me with a great and quick base. Then I assigned cards to the meshes by first creasing the starting edge and afterwards applying a Strands from Grid Surface subsystem. I added a couple of deformers:
- Strands from Grid (pre-assigned): defines resolution through subdivision steps, the number of cards by strand count, spacing parameters if multiple cards are generated, and to use the creased edge as a starting point;
- Align Tilt to Source Surface: makes cards snap to the surface of the mesh, making it follow the surface;
- Radius Set: adapt the width of the card and/or taper cards;
- UV Region Distribute: select the UV regions/texture space used for generated cards;
- Noise Deform: a set of noise parameters;
- Add Tilt: tilting/rotating the cards.
Layering
In terms of how the hair was built and layered, I took a lot of inspiration from Marcin Cecot's breakdown. In the case of my character's hairstyle, it can be separated into six layers: the hairline, the base shape, volume, and direction, the finer volume, first breakup, sparse strands, breakup, flyaways, and baby hair for final details.
1st Layer: Hairline
To create the hairline, I placed dense haircards around the scalp and at the split of the bangs. This helps blend the transition between scalp and cards, which would otherwise look harsh or unnatural.
This was the only time I used a different placement method: the draw function in Hair Tool. It generates cards that snap directly onto the scalp, wherever they are drawn on. After this, I deleted unseen faces to reduce my policount. I used dense and opaque textures.
2nd Layer: Base Shape & Direction
This layer builds the base for the rest of the hair. It blocks out the main shapes and direction of each section. It consists of very dense cards and, therefore, blocks the scalp from shining through.
In the front, the tied section, and the bun, I placed single dense and opaque cards side by side or slightly overlapping to fully cover the skin. The deformers here were fairly straightforward:
- Align tilt to surface: snaps card alignment to the base mesh;
- Radius set: adjusts card width;
- Noise deform: subtle variation;
- Add tilt: rotates cards slightly.
For the long hair in the back, I created strands of three cards: one opaque card carefully crossed with two semi-sparse ones. This criss-cross profile was built with three subsystems. The opaque card was set as the parent ([TAG] field), while the two semi-sparse subsystems were set as children ([PARENT] field). With this setup, child deformers like "clump (child)" can be used. Making the child sub-systems follow the direction, tilt, alignment, etc. of the parent.
It's important to note that deformers are applied hierarchically: those added later can overwrite earlier ones. Placing the "clump child" deformer relatively early allowed me to control the child cards separately from the parent. I also set up multiple UV regions so that, by changing the seed, subsystems could pull from different textures for variation. The rest of the deformers were the same as above.
3rd Layer: Volume & Breakup
This layer added extra volume and a first breakup to the style. While the strands follow the general defined direction, they break up the very obvious card look. By placing strands with a slight distance from the previous layers and using a criss-cross profile, they added depth and shadows.
The setup followed the same principle as the second layer’s back section, but here, a semi-sparse card was crossed with sparse cards. Since these are more transparent, they can overlap directly without causing rendering artifacts or obvious card edges.
The deformers were similar to the previous layers, with slight adjustments:
- Noise deform was increased for more variation;
- The radius set was driven by a profile curve to taper the ends. Applying this approach of tapering across subsystems created the effect of natural clumping.
4th Layer: Sparse Strands & Breakup
This layer consisted of strands made from two sparse cards crossing each other. Since the sparse cards are quite transparent, it is easier to intertwine them with previously placed strands. Some were placed against the overall flow to create irregularities, which helped achieve a more natural look.
In terms of deformers, the approach was the same as before. Some have been slightly adapted to gain the desired look of this layer. A general note: occasionally, some cards will twist a bit strangely or too often. By enabling the Twist Fix in the Align Tilt to Source Surface deformer, this will be fixed.
5th Layer: Flyaways
Flyaways were added across different sections in varying lengths and widths. These loose strands broke up the silhouette, added slight messiness, and helped soften the overall style. Together with the sparse layer, they reduced the card-like feeling and contributed to a more believable look.
Their profiles were either two crossed cards or a single card rotated in different directions.
6th Layer: Baby Hair
Finally, I added very thin, soft strands as baby hair. These provide the last bit of breakup and help transition smoothly from the hairline to the rest of the groom. I placed them mostly at the front near the bangs and at the back of the head as small loose strands.
The profile of those cards is exactly the same as for the flyaways. For baby hair, it is important to give a very soft and fine look. Using the radius set deformer, I adapted the width to give them a much thinner appearance.
Material Setup & Rendering
To bring the hair to life and render it, I used Unreal Engine 5. For the shader, I played with the Paragon Terra Material, available for free on Epic's marketplace Fab. Most of the adjustments were aimed at achieving a softer look and blending the roots more naturally into the scalp.
- Reduced AO intensity;
- Adjust the base color and its color variation;
- Changed edge masking for smoother transitions;
- Tweaked specular settings;
- Enabled Eyebrow option, adding the pixel depth offset specifically for roots, it helps for a softer and smoother transition of the roots and the sculpt. Also makes the baby hair appear more natural, softer, and less harsh than without.
Final Renders & Result
Here are the final renders of the hair from all angles. If you want a closer look with higher resolution, check out my ArtStation post or see it on the WIP character in my portfolio.
The whole hair consists of 46.221 tris or 23.111 polys. Although I want to test out the Simplify strands option in Hair Tool to further optimize the polycount.
Conclusion
When it comes to real-time hair and haircards, there are many challenges: from placing cards in a way that actually feels like hair instead of flat planes, to understanding how real hair behaves, how it's styled, how it clumps, and how gravity or wind affects it. A specific challenge for me during this project was the long breaks I had to take because of an injury to my main hand. Progress was very slow, since I often had to stop and then find my way back into the project. Each time it took effort to get back into the flow and remember where I left off. At the same time, though, the breaks gave me space to reflect on my work and think about changes or improvements.
I also had to learn Blender and the Hair Tool add-on completely from scratch. Finding a new workflow with new tools, figuring out what worked and what didn't, was definitely challenging. I restarted the hair a couple of times, simply because the more I understood the tools, the more I realized how I could approach things in a simpler, faster, or better way. In the end, I think I developed a workflow that feels much more efficient and intuitive. I'm sure it will be a huge benefit for future projects!
For anyone starting a character or real-time hair project, my advice would be: do your research. Study how different hair types look depending on ethnicity, how hairstyles are built, and how hair behaves once it's been moved, styled, or messed up a bit. The small details make a big difference in conveying the look and feel you're aiming for. On the technical side, don't shy away from trying new tools or workflows. It may take some trial and error, but it’s almost always worth it.
Finally, my biggest piece of advice is to reach out to others. I've learned so much just by asking friends in the industry, fellow students, or people in online communities. I'd especially like to thank my mentor David Kuo for introducing me to the tools and teaching me the fundamentals of haircards; my friends Callum Blair McGuire (Character Artist) and Eri Takeda (Groom Artist) for their valuable advice and feedback on haircards and on understanding hair in general; and my friend Ha An Bui for supporting me to push through those forced recovery periods.