Hair tool – Blender addon ($)

I developed Hair Tool addon for blender to simplify creation process of low/medium poly hair models
This addon will help you generate hair mesh ribbons with uv’s from bezier/nurbs curves. It is how most current games are doing hairs for characters.

Blender Hair Tool addon

Hair Tool workflow


  • generating curve ribbons from mesh surfaces
  • convenient way of switching back and forth between curve ribbons and  mesh ribbons  hair state, while preserving mesh uv’s
  • ability to adjust ribbons radius profile over strand length to taper the ribbons shape
  • ability to convert Grease Pencil strokes to Particle Hair
  • ability to convert Curves to Particle Hair
  • ability to generate Curves/Ribbons from Particle Hair
  • Randomizing ribbons UV (you can draw multiple uv boxes, that will be randomly picked for each ribbon strand).
  • Powerful Curve Resampling – increase, decrease curve/ribbon points amount, while preserving it’s tilt and radius.
  • Generating vertex color and weights gradients for ribbons.
  • And More!

Video tutorial mostly about generating curves from mesh surface, with some tips and tricks, problem solving and stuff:
Newer video showing new features:
Video about hair shader:
Video about creating texture:

Basic workflow for generating curves from mesh surface:

First step is to generate base shape of hair. For that use grid mesh, created only of quads. Mark one border of this mesh with sharp edges – those will become roots of hair splines:

Press ‘Curves from surface‘ button located in left Tool Shelf -> Tools, to generate curves from selected object. Generated curve settings can be modified using ‘F6‘ hotkey. You can adjust stuff like hair amount, length, add some noise etc. Or you can do some manual tweaking here going into curve ‘Edit mode’.

To add ribbons to generated curves, press ‘Generate Ribbons’ button. There are some settings to play with under ‘F6’ hotkey. Usually manual work here is needed to adjust curve tilt (select curve and press Ctrl+T – to change curve tilt).

To preview how the hair will look, convert them to mesh with ‘Curves to Ribbons’ button. You can now quickly uv this mesh by going into ‘UV Editor’ and searching for ‘Hair UV’ operator under spacebar. Left click and draw rectangular shape, in uv Editor, to define the uv bounds for hair strands. That is it, hair are ready to render.

If you don’t like the result you can go back to curve by pressing ‘Ribbons to curve’ button (warning – any changes to mesh topology will be lost!). This kind of workflow lets you tweak the hair in curve mode, convert it to mesh and preview If you don’t like it – go back to curve mode and tweak it again. UV’s defined previously will be restored.

Curve Ribbon operations:

Curve Simplify

Curve Simplify- Allows to reduce point count. Good for reducing polycount on hairs .

Resample Curve

Resample Curve. Allows to increase/decrease number of points each curve is made of. It keeps the original strand radius and tilt.

Smooth Curve

Smooth Curve – smooth strand points (eg. to reduce noise)

Smooth Tilt

Smooth Tilt

Taper Curve

Taper Curve – change strands radius over length

Align Curve tilt

Align Curve tilt – lets you align cure tilt to target object surface.

Randomize Curve Tilt

Randomize Curve Tilt – change curve tilt over its length

Select Tips/Roots

Select Tips/Roots – lets you select first/last points on curves. There is randomize option under F6 properties.

Mesh Ribbon operations:

Add Ribbon Vertex Color

Add Ribbon Vertex Color – create black and white color gradient from strand root to tip

Add Ribbon Weights

Add Ribbon Weights – create vertex weight gradient from strand root to tip

UV hair operator

UV hair operator (found under spacebar) – Left click and draw multiple rectangular shapes, in uv Editor, to define the uv bounds for hair strands. Press enter to confirm.

Convert operations – let you convert Particle Hair to (ribbon curves), curves to Particle hair, Grease Pencil to Curves etc.:

Ribbon to Curves

Ribbon to Curves/ Curves to Ribbon – allow for switching between ribbon curve and ribbon mesh state. Usually you will want to do hair modeling in curve state, and then do UV in ribbon mesh state.

Particle Hairs to Curve – generate curve ribbons from Particle hair.  Align their tilt to head with ‘Align Tilt’ checkbox, and embed hair roots deeper into the scull using ‘Embed Roots’ parameter.

Particle Hair from Curves (this can be used to convert zbrush fibermesh to blender Particle Hair system). Select curves and target mesh (that will receive Particle Hair) and use ‘Particle Hair from Curves‘ to convert curves object to blenders Hair system.

Ribbons from particle hair with children‘ – gives more evenly distributed result compared to build-in child particles . Great for short Hair.

Particle Hair From Grease Pencil‘ strokes painted with grease pencil, can be converted to particle hair (with some options available under f6). Checkbox next to this button, describes if you want to use Scene GPencil data (when enabled), or Object GP data (when disabled).

  • ‘Flip UV’ option in preferences – if enabled random strands will have uv’s flipped in X-axis.

Hair Tool examples:



56 thoughts on “Hair tool – Blender addon ($)

    • I was going to make tutorial this weekend, but coding new update took longer that expected (I can do one thing only at time 😀 ). There are many new goodies with 1.2 release. But I still plan making tutorial. For now I can say hair texture was hand painted with PaintStorm Studio. Great app!

      • Hi! Just bought your addon, from the looks of it, it seems it may free me from the hell that is hair making!

        Do you know how to recreate the anisotropic effect in internal? Or in something like shader forge for unity?

        This seems like something much more useful for realtime game ready characters rather them cycles renders.

        Some people seem to bake normals from a smooth shape like a sphere to strangers hair, will this be needed with your addon?

      • There seems to be ‘Tangent shading’ checkbox in BI, so It should be possible to make similar shader there. About shaders for unity – well I don’t know it, but all moder game engines are supporting stuff like anisotropic materials through some tricks. I know in unreal there is demo scene with hair shader that you can modify to your needs. But it is bit complicated to understand the node setup. We have technical guy for that 🙂
        About baking normals from one mesh to another it is already posible in blender just use Data transfer modifier. – firs image has the setup for what you need. I takes 5 clicks to setup.

  1. Um I know I may sound a little stupid, but how do you mark sharps? what do you use to do that? Is it the same as marking seams? Is there a different place I have to go? you don’t say anywhere what a sharp is or how to make one.

  2. I love this so far!!!! this is amazing. I think the one thing I wish it did was add the noise values to the hair ribbons generated by particle strands.
    Oh and when I created a second hair “clump” with this, it tells me the first mesh cannot be a shared user group and to remove the user group. I think this is easily solved by me changing the name of the hair clump.

    Seriously though, thank you for this addon. I’m looking forward to more updates and I heavily support it through the community ❤

    • The thing about adding noise to blender particle hair is, that blender already has build in noise features in particle child strands. It is explained here – About second hair clump – it is a feature not an bug. It lets you preview particle hairs as ribbons, and if you don’t like it, just tweak hair particles, and generate them again – old ribbons will be automatically updated. And as you discovered, if you want new ribbons, just rename (or duplicate) old one.

  3. Cześć, właśnie kupiłam twój addon. Niestety mam problem ze skrótem F6… a konkretnie, po wciśnięciu opcji add ribbon to curves skrót F6 działa tylko raz… jeśli sobie kliknę w międzyczasie gdziekolwiek indziej to ten skrót przestaje działać… Z resztą przy tworzeniu krzywych także zdarza się że nie działa i muszę restartować blendera. Tak chyba nie powinno być? Używam wersji 2.78

    • Cześć, właściwie to chyba nie jest bug. Włączając dowolny operator w blenderze można uzyskać dostęp do jego opcji przez f6, ale tylko bezpośrednio po użyciu danej funkcji. Mam juz na liście rzeczy dodo, dodanie zapamiętywania opcji danego operatora. Na razie może można zmienić szerokość ribbona przez zmianę promienia krzywej (alt+s), a liczbę podziałów w poprzek możesz zmienić we panelu właściwości krzywych – parametr ‘Preview U’. Czy coś takiego wystarcza? I jeszcze jedno addon ma błędy w wersji blendera poniżej 2.78c. Więc zalecam aktualizację do wersji 2.78c

      • Dzięki za odpowiedź, już trochę się z tym oswoiłam. 😉 Dziękuję również za przydatny skrót, to bardzo ułatwia sprawę! Naprawdę świetny addon, fajna alternatywa dla wiecznie crashującej Majki. 😉

  4. Hi amazing plugin. I just have one questions. How can I use fibermesh with this plugin. I exported the curves from zbrush as obj and imported into blender but I dont know how to convert it to curves.

    • Yes, it is possible in 1.4 release. Steps are:
      – join imported fibermesh obj, with ‘alt+j’ command
      – then convert this merged object to curves – with ‘alt+c’ – Curves from mehs
      – finnally select curves, then head object – and attach those curves with ‘Particle hair from curves’ option in Hair Tool panel.

      • Just to make sure I understood this right (now that I bought it already.. — damn I should have read this here before!): It’s NOT possible, to get particle hairs from a pre-existing mesh with this addon? Aka: make particle hair from curves that we created after a mesh there? o.o

      • There is option – ‘Particle hair from curve’ but thing is, if curves were crated from mesh object – the direction of those curves may go in different directions. You would have to unify curves direction before converting them to Particle hair.

  5. How the heck do you install this? I bought version 1.4 but haven’t had the time yet to get around to testing it out (so now I was sent 1.5). I tried copying all the python scripts into Scripts/Addon but that didn’t work. Then I tried “Install from File” for each one but no luck there, either. I’m using the latest Blender and I can’t see this tool anywhere (I had Sensei activated, but even turning it off and going through the above doesn’t help).

    • The file structure should be like this:
      So all your ‘Hair Tool’ files should be inside this folder: C:\Users\YourUserName\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\hair_tool
      I it should work with both 2.79 and 2.78c. I’m not sure about sensei format – but can you try default bledner build from

      • Even on a brand new installation of Blender, with my stuff in the same directory as yours (although I don’t have ALL those python scripts — I only have six of them and only six came with 1.4 as well so I’m not sure where you are getting the rest) this doesn’t work. The hair tool doesn’t show up in Tools nor does it show in Modifiers — so I’m lost.

  6. Okay, I’m an idiot (well, at the very least, a Blender newbee). I keep looking for the tool by alphabetical order (so Hair Tool) instead of under the Catergory:Order it is in addons. So I found it and activated it and at least have it showing. You can ignore my problems for now (sorry).

    • That is weird, maybe try cleaning cookies or different browser? I tried opening links in both opera and firefox and both worked ok. Or manually copy link, and paste in new tab… I have no other ideas.

      • It’s coming up that way in all my browsers — I suspect YOU don’t see it because you have a paid Vimeo account (or perhaps your Vimeo account is just logging you in automatically). Also, there is something odd about that link — try coping it and pasting it into Notepad and you’ll see. WordPress does an auto re-direct. However, I *was* able to get to that video by just manually typing in the link (so not by clicking or copying). Just a headsup as there may be many who can’t see your videos.

  7. I SO desperately want to be able to use this — and I feel like an idiot. I’m following along your new tutorial, drawing grease pencil strokes (on an object) and then, with object selected (and no scene in there) I’m pressing the button but it tells me there are no grease strokes. Can you even give me a clue as to what I might be doing wrong (it’s the latest Blender, and the interface is a bit different but operates exactly the same). Here are my screen shots if that helps:


    • I did bad job in video explaining button next to ‘Particle hair from GP’. The button next to it is forcing operator to use SCENE GP data. You have to disable it, if you want to use OBJECT Grease Pencil data. So if you paint GP strokes on Scene, then enable buttot next to ‘Particle hair from GP’.

      • Thanks so much — that explains a lot. I’m finally making good progress (now if I can only wrap my head around the UV stuff I think I’ll be there). It’s an AMAZING tool, and one I think most all iClone owners will want to have (and I’ll promote it there once I finally get some hair out to show them).

  8. Okay, just in case it was the Sensei interface I was using I went back and used a clean install of Blender and now I get errors when I try and convert. Here’s the screen:

    Sorry to be a PITA but I so much want this to work as I think it would solve a ton of problems for hundreds of iClone users (most of whom would buy your plugin). I *promise* you I will sing its praises if I ever get this stuff figured out.

  9. I bought this add-on and it’s fantastic. I’m working on my first character model, only done hard surface stuff prior. I’m trying to figure out how your hair doesn’t render too thin with only one layer. I am rendering in Marmoset not blender, using the hair texture as alpha but even with 2 or 3 layers of hair I can see through to the scalp. Do you have any advice regarding material?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s