Hair Simulation

Human hair simulation for Houdini using a Vellum solver.

Overview

In this project, I set out to groom and simulate two distinct hairstyles using Vellum tools. Different hair styles require different approaches to simulation, and getting believable hair behavior is tricky!

Sleek and Wavy Hair

I create my guides for Vellum simulation using a Guide Groom node to plant and sculpt some initial guides, and then Hair Generate and Hair Clump nodes to generate more guides and get them roughly into the shape of the desired hair.

Hair guides

To allow for variation and more realistic motion, I assigned different Vellum constraints based on the hair layer. Some of the guides taken from the top of the head (to be used for slightly more “frizzy” hairs later on) have a moderate amount of stretch and bend stiffness. The stretch stiffness is still kept high in any case, because we should not expect human hair to stretch in most cases.

First set of hair constraints

The rest of the guides on the bottom layer have a higher stretch stiffness, ensuring that most of the hair shape will not change.

Second set of hair constraints (stiffer)

In order to keep the hair from separating into individual stray strands and losing its overall volume during the head turn, I apply glue constraints between the stiffer guides to keep them closer together. However, I leave the very ends of the guides unconstrainted (the last 12 vertices or so) in order to have more freedom on the ends. The ends should have more freedom to separate and change shape.

Glue constraint between hairs

From there, I can simulate the guides and use them to generate more hair, create some length and frizz variation on different hairs for realism, and clean them up with a final Guide Collide VDB. The rendered results are below.

Wavy sleek hair

Afro Hair

The afro hair style presented several challenges, most of which had to do with using different ways to maintain its shape and volume. Unlike the sleek and wavy hair style, its motion is more limited.

Like the first hairstyle, I first create guides with the overall shape of the hair using Hair Generate and Hair Clump nodes.

Hair guides

Once I have my guides, I use use hair constraint to set the stifftness of the hair. I keep the stretch stiffness high, but found that playing with the bend stiffness of these guides gave interesting results. I settled on a value much larger than the bend stiffness of the sleek and wavy hair, since this is a shorter hair style with coarser hair.

I also use a “permanent” orientation pin type for Pin to Animation vs. a “soft” one, so that the hair remains more pinned the way it’s groomed.

I also use a glue constraint between hairs to help the hair hold its volume:

Glue constraint

Unlike the sleek and wave hair style, I found that an additional Attach to Geometry constraint here is useful. The hair can’t get too close or far from the head here, unlike the sleek and wavy hair style where the hair has more freedom of movement.

Attach to head geometry

From there, I can simulate the guides and use them in another Hair Generate and Hair Clump node to create the afro hair below.

Afro hair

Now that I’ve gotten these results, I’m excited to see what else can be achieved with Vellum!

Resources

Denis Zen’s Grooming Tutorial

Andriy Bilichenko Grooming Demo