Hairy Issues // updated!

  / by Andy

hey there!

hair render test with curves

okay i have to admit it. this decision was quite hard to make: our characters will have hair – and not cartoony hair, but believable realistic hair!
so for me that meant, dive into blender, research and hope that i’d find a solution. admittedly, to this day there were only few convincing hair renders done in blender.
– dupliverted curves are ok for fur, have a nice appearance, but tend to look too repetitive and produce jaggyies in render
– particles are good for overall control of the hair system and material appearance but look crappy when rendered
– the fiber script has the ability to style hair in a good way, but produces heavy heavy heavy meshes
– the beast script looks ok and renders fast, but still has that card based look to it which is not acceptable for long flowing hair.

sooo… this was kinda tricky. duh!

i decided to go the curve based way because with the ‘UV orco’ feature it enables me to spread texture properties over the indidividual hair strands (dark color and opaque at the root, brighter color and transparent at the tip). so i first tried to make a good old fashioned hair furry ball and then slowly nudge it into a more hairy direction…

hair render test with curves hair render test with curves

blender renders 400 K hair strands (with 12 faces each) without any problems, but once we add the much needed transparency, render times climb up! but still… we were able to render a full HD (1920×1080) frame with hair in closeup in under 15 mins. this technique isn’t new, it’s been possible for ages – all the pics here to the left and right could have been done 6 years ago!

the tricky thing with geometry based fibers in blender is that once they’re more narrow than one pixel on rendertime, they show jaggy lines. z transparency helps to cure that a bit. and another drawback: it’s rather easy to make furry creatures with this technique but almost impossible to design a full fledged hairstyle!

so ton and i discussed this and we came to the conclusion that we need to extend the flexibility of the particle system to allow advanced styling and animation AND geometry based rendering with full shadow casting, specular, full control over material properties along the strands, render fast *takes breath* AAAND eliminate anti-aliasing issues to the maximum possible amount.

ton left, we went back too work. and only a couple of hours later i was completely amazed to see the first results in cvs – ready to play with!

the new improved hair solution is simple. static (animated) particles are rendered as a series of extruded faces which are parallel to the camera view, and blender makes sure that they’re rendered at the right size to produce no (or only minor) AA issues. workflow is easier than ever: make a mesh, assign static particles, add material – and off you go!
it’s also easy to add transparency and different color properties along the strand: since it uses the x axis to folow the strand you can simply add a blend texture with a colorband to control color and transp offset.

funky hair test with new particleson the todo list is the inclusion of the new particle patch which allows for guide curves (think of softbody guide curves!) and much more goodies for animated particles, too! also there has to be significant speedup with ztransp rendering and anisotropic shading is also planned. further we should be able to use vertex colors to influence hair density, direction and lenght.

here is a little test to show you the possibilities of the new particle rendering. it also uses a cloud texture on the eighth tex channel to make the hair curly. of course you need the latest, and i mean LATEST cvs to see it correctly (otherwise you’d just see the old usual crappyness)

UPDATE: now anisotropic (tangent) shading has been implemented:


see ya! =D

« | »

61 Responses to “Hairy Issues // updated!”

  1. mrfranz said on 8 Oct, 2005:

    I just find a way to animate particle with a wind emitter, using an ipo driver. A made a test video which you can found
    here .

  2. quickflash said on 8 Oct, 2005:

    @Matt: No, didn’t know that, and yes that helps :)

  3. chris said on 12 Oct, 2005:


    This is great:
    -any ideas on when this will be in a release blender version
    -are there people around who could write a short turorial?

  4. Kamil said on 23 Oct, 2005:

    The funkyhair.blend is rendered right in 2.40alpha release.

    (applying wind in proximity, enabling softbody -> strands flicker in the wind)

  5. Shane said on 26 Oct, 2005:

    i cant make the python script for the particel update work

  6. the buzzer said on 28 Oct, 2005:

    For some of u guys living in a world where u can make a choice on which 3D application to use, it may sound like… “if not blender, it could be another modeller out there”, u may have 3ds max or maya in u local software shop, and have the lots on euro to buy.But in Africa, Blender is a blessing.Less that 10 MB on slow internet connections, a wonderful community, and all these guys working endlessly to make things like this happen.I think I’m going to cry.Ton and the rest, u guys are like stars to me.What can a guy like me do to keep this going on? Cheers all!

  7. Paul said on 4 Nov, 2005:

    Blender is so friggin sweet. Blender has got the magic of great minds, freedom, and lots of enthusiasm.

  8. Mishel said on 4 Apr, 2006: