Home Creators Posts Import Register Favorites Logout

Content

Not too long ago Blender implemented a whole new hair and fur creation system based on Geometry Nodes. I didn’t pay much attention when it first came out, but the Blender devs have been steadily adding more and more features. I’ve been working on a portrait project and decided to use Blender for the groom to see what it has to offer.

I’m very happy to report that the workflow is excellent! I find that it matches Maya’s Interactive Groom in most respects. It lags in a some areas, pulls ahead in others, but on balance it’s very similar. Blender offers much better export options. Plus, you have access to “visual programming” Geometry Nodes to create your own custom modifiers.

The general concept is what we’re all used to from XGen, Interactive Groom and Houdini: plant guides, sculpt them, populate the surface with interpolated hairs, paint density and other maps, create clumps, and more. In this article I’ll go over the steps I followed to accomplish most standard grooming tasks.

(Note that in this case I’m working backwards from my existing, mostly complete project, so things may jump around between different states in screenshots and clips. It should be no problem to follow along though!)

Creating a Groom

The first thing I always like to do is create cutout geometry of the areas that need hair. For example, for this portrait bust I extracted the eyebrow mesh, the eyes, the scalp and the chin/jaw/lips.

You can make quick and dirty UVs on each cutout so that you can paint maps for use in rendering. Make sure the cutouts are fairly high resolution to support painted vertex maps. A quick subdivide or remesh before UVing will work well. Here are my increased-resolution cutouts, ready to accept a groom:

I populated my Blender scene with the original head and eye meshes, plus the cutouts. I also set up Cycles skin and eye materials, a hair material and a dome light for lookdev.

(Bonus tip: to turn off visibility of the dome light texture and see only a black background, disable Ray Visibility > Camera under World Properties.)

To start our groom, choose a cutout in Object Mode and select Add > Curve > Empty Hair. This creates a hair container on the mesh.

Select the new Curves object in the Collection and switch to Sculpt Mode. This will display a new toolbar at the bottom of the screen with all the available grooming brushes.

Use the Add brush to start planting guides in the outline the general shape of the groom, then brush them into shape. Turn on symmetry to mirror all actions on the other side of the mesh.

It’s worth noting that curves are also editable using standard polygonal editing tools. Not that you’d particularly want to do this, but the fact that it’s possible is very cool.

To fill in the hairs, add an Interpolate Hair Curves modifier, select the Surface using the eyedropper and dial in the settings as desired.

We’ve got a problem though: the hair is covering the entire surface! To fix this we’ll add a density map. These are very important for clearly defining the boundaries of the groom and also thinning them out in spots for a realistic look.

I tried using painted texture maps for this, but I wasn’t too happy with that workflow in Blender. Vertex maps seem to be a better choice. They’re quick to create and are easily modifiable later.

To get started painting, select the cutout geometry and hide everything else in the scene, as needed. Select Vertex Paint.

From the dropdown, click the + icon to add a new map and give it a unique name.

When painting, we’ve got access to a nice set of default brushes, including blur and smear.

Set the color to white for full intensity of the modifier and black for none. If you’ve got a stylus this is all pressure-sensitive too, of course.

All maps are saved in the scene, no need for external textures. You can go back and edit your work at any time. If you’ve got more than one map on a mesh you can switch between them using the dropdown:

To make use of a map in any modifier, simply find the parameter you want to control, click the Input Attribute Toggle to the right and type in the map name. Here we’re using the beardDensity vertex map to control the Density Mask parameter on our beard groom:

Once the general shape and density of the hair is looking good we can add some more modifiers. My go-tos are Frizz Hair Curves, Clump Hair Curves and Set Hair Curve Profile.

These can all make use of vertex maps too. I find that creating several clump and frizz modifiers, each with different maps, is a good way to go. A one-frizz-fits-all approach rarely looks good!

Set Hair Curve Profile controls the taper of each hair strand. Long hair looks especially good with a taper at the tip. Note that hair that is frequently cut, such as a well-trimmed beard, will not have a taper and will look wrong if it does.

After dialing in more details you might find yourself wanting even more manual control over the final look. For example, you might want to move or delete certain hairs, especially around the edges. Many artists prefer a completely procedural approach to this and let the maps and modifiers control everything. Personally, I prefer a more hand-drawn approach and so I like to manually edit the interpolated hairs.

If you try doing this you’ll find that it’s partially possible, but the problem is the modifier keeps “re-interpolating” every time you make a change. The solution to this is to Apply the interpolation modifier.

This will give us a finalized set of hairs that can then be moved, deleted, brushed and anything else you might want. Note that this step is destructive, so I recommended saving a new version of the scene before applying the modifier. You won’t be able to go back to working on just the guides or editing the density vertex map, for example.

After applying the modifier we can now start really fine-tuning the look, including using the ever-magical Slide brush. Formerly the sole domain of Houdini’s new grooming system, we now have this great tool in Blender. Other useful actions are deleting hairs or adding single new hairs. When adding, make sure to turn on all the interpolation options in the Curve Shape dropdown so that the new hairs match the existing ones.

Note that the other modifiers in the stack can remain active: clump, taper, etc.

Every once in a while I’ll check in with a full Cycles viewport render to see how things are looking.

Once I have the look finalized, including breaking symmetry for a more natural look, I like to add a custom Geometry Nodes modifier to set the numbers of points per hair.

This modifier creates an empty Geometry Nodes graph. Head on over to the Geometry Nodes tab, select the modifier and click New.

This will give us Group Input and Group Output nodes, between which we can put our own operations. In this case we’ll add a Resample Curve node. You can either set a fixed number of points for each hair (Count mode), or, in the case of grooms with varying lengths, set the resample to a specific Length. If you set it to 0.1, hairs of length 0.5 will have 6 points, length 1 will have 11, etc.

Export time! Blender has a bunch of great export options in general, with Alembic and USD being perfect for hair/fur. You’ll want to enable/disable relevant export settings as needed. For example, for USD I choose selection only, no lights or cameras, only curves, etc. You can save an Operator Preset so that it’s easy to export in the same manner every time.

Conclusion

And there you have it! A workflow that can create fantastic full grooms that are fully portable to any other app. I’m a huge fan of this and I hope you like it too!

Files

Comments

No comments found for this post.