A full walkthrough/tutorial of creating a simple bob hairstyle, completely from scratch, using the Hair Tool blender addon.
Created: July 21 2024 by @eagul
This guide will show you how to create your own hair in Blender from scratch.
Some familiarity with Blender and basic modeling skills. If you don't know how to Use Blender yet, check out Blender: Getting Started and complete at least the donut tutorial!
The paid Blender AddOn Hair Tool (purchase it on Gumroad)
Usefull links: Hair Tool discord server: https://discord.gg/GwjA9NrKww Hair Tool official documentation: https://joseconseco.github.io/HairTool_3_Documentation/
You can download the example project from our github!
Don't blindly copy the exact values I used, play around with them and see what works best for your hairstyle!
Using any modeling method you like, create a so called grid surface. This should have the topology of a plane (no holes, loops, etc). Mark the root edge sharp. Core concept: Keep the poly count low. The less 'control points' you have, the easier it is to control the object.
Open the HT panel (N), expand the Hair System, Sub-Systems and Deformers menus.
Press CTRL + Shift + H, then Transfer Hair system to Empty Curve. The hair object will now be a curves object parented to the grid surface.
Add the following deformers: - Align tilt to source surface - Mirror
Additionally, set the desired profile width in the Profile tab.
Add a 'Filter' Subsystem below the Grid Generator Subsystem. This subsystem allows you to add deformers to any curve object. It does not matter if curves are virtual or real.
A separate filter subsystem is created for the upcoming deformers. This is done so the first subsystem can be later baked separately from these deformers. It will facilitate manual edits, because there will be far less control points.
Add the following deformers: - Duplicate strands - Attach to surface - Mirror (hide it in the first subsystem)
In order to create a convincing mesh, you need to introduce some imperfections. In procedural HT, this is mostly accomplished by using randomizing input masks, and the noise deformer.
Add the following deformers: - Add Tilt - Noise Deform
It's a good practice to check the shaded look of the hair during modeling. This can for example help you spot clipping or thin areas, while also providing a more accurate visual representation of the final result.
Navigate to Render settings, select EEVEE, and enable Ambient Occlusion!
And now, you should have a decent preview of what you have created already :D Here, I added a Lenghten deformer to re-gain some of the length lost to UV transparency (which i forgot to account for before).
Duplicate the curve object you used for layer 1. Press the [2] indicated with the red circle. Do this for both subsystems! If you don't want profile data to remain linked, make profile data unique too. I will not be making profile data unique for this hair.
Hide the filter subsystem of the second layer.
Add the following deformers: - Slide Points - Push Out - Attach to Surface
Unhide the filter subsystem. Hide the mirror deformer in the first subsystem.
At this point, you are free to customize this layer however you like. These are the changes I made: - Increase the amount of strands generated from the grid - Randomize spacing of said strands to some degree - Increased random tilt to 15 degrees - Increased Noise Deform amplitude a bit - Slightly increased Lenghten, and added a random Trim deformer. Average length slightly increased. - Selected lower density UV boxes for this layer.
Optional, but if your poly limit allows for it, you can include additional layers for even more detail. Use similar techniques as described above to create those layers. I am adding 2 more layers, low density, with large push out values.
To create a fringe, you can simply repeat the same steps as for the main body of the hair, so create a grid surface and generate layers from it. However, for the purpose of showcasing HT's features, I will demonstrate a more manual approach to modeling hair.
Select the scalp mesh. Press Shift + A, add Curve > Empty Hair. Then, select Sculpt mode. In the top bar menu, change settings for Curve Shape. I used 0.05m and 5 points for this. Both can be changed easily later in edit mode. Place down a couple curves. Comb them into position using the appropriate brushes, using edit mode, or Hair Tool's modeling workspace.
Add the following deformers: - Align Tilt - Mirror - Radius set, and taper the roots (flip influence range arrow) - Optionally other procedural deformers, I added a Lenghten, but you can just as well simply edit the curves directly.
Then, duplicate the object, make subsystems unique, push it out using the deformer or manually do it, in order to create the next layer. It is inefficient to model every curve manually, so make use of the duplicate strands deformer, as showcased earlier in the procedural section.
Again, if your poly count allows, it's good to add some thin coverling layers on top, they will aid with realism and blend the fringe a bit better into the main part of the hair.
Any hairstyle will have some strands that cannot be tamed. Sometimes they are referred to as flyaways. When making the fringe, you can simply model them while making the final layers, because you are using real curves anyway. See image above.
After baking your subsystems, you can use any curve modeling tools to edit them further. HT's Hair Modeling is very well suited for this.
Add a couple extra strands to break up the flow, if desired.
Add some deformers to the strands, be creative!
Shrinkwrap the sharp edge to the scalp mesh. Use a Mirror Modifier. Hair Tool has ways to break up the symmetry. It is best to only have a single grid surface per hair system. One half of a grid can still affect curves which are not generated from it, and this can cause issues. Subdivision surface modifier can be used. I model by simply extruding edges, and some sculpt mode mixed in. Loop Tools addon is good for cleanup ('relax'). Set Viewport display to 'Wire'. You can change the opacity in viewport overlays menu, and assign random colors in shading menu.
You can set 'Mean Vertex Crease to 1 on specific edge loops, if you want them to remain sharp while using a subdiv modifier.
When building hair card meshes, you want bottom layers to be opaque, and surface layers to be progressively more transparent. The bottom layers will prevent the scalp from shining through, while the covering layers will provide a volumetric effect, and hide the sharp contours of high-alpha bottom layers. Here is an example of a hair texture. Notice multiple strands, which become more and more transparent the further to the right they are.
The Add Tilt deformer with a randomize input mask is capable of... you guessed it... adding... a random tilt... to individual strands... Press the downward arrow right of the tilt value to randomize said value.
For this hair, I will be using a fairly low random tilt, to have a straight, and neat hair look. For messier hairstyles, or more outside layers, a higher tilt value can be beneficial.
Slide points will give you more curve resolution towards eighter end of the strands. Here we need a bit more points at the roots.