A new curves system, suitable for hair, is going to be part of the upcoming Blender 3.3 LTS.
This article covers the main design philosophy behind the new system, the initial deliverables and what is to be expected in the near future.
Curves Object
The new system is based on Curves objects. To start working with hairs you first need a (scalp) surface. This is the mesh that will be used for deformation and to add new curves on its surface.
With the surface object active, go to the Add menu and pick Curve → Empty Hair. This will create a new curves object and automatically set up a few things:
- Set the active mesh object as the surface.
- Parent the new Curves object to the surface.
- Setup a Deform Curves with Surface node.
This should cover most of the cases when artists want to add a new Curves object for hair and start to add and comb its curves. For animations, the curves get automatically deformed if the surface is animated. If artists need a more complex setup, they can tweak the initial node group.
The Outliner is the place where artists can group multiple Curves objects, hide/unhide them, and have a basic layering system.
This Curves object will eventually replace the old curve object (still used for the Bezier, Nurbs and Path curve primitives).
Spherical Brush
Back in 2020, during the discovery phase for the Geometry Nodes project, Blender Studio’s artist Andy Goralczyk was asked about the existing particle system, and what he was expecting the most. He shared his needs for set dressing tools. This was the initial step to the Geometry Nodes project, helping to pivot the particles project into what we have today.
Andy was also inquired about hair grooming, since the hair particle system was the way artists would often do set dressing. Besides commenting on the existing features, he raised a special concern about the existing brush. The brush allowed only for a projection mode, commonly known as a 2D brush. That leads to unnatural effects, and uncanny distortions in the hair comb.
This inspired the team to prioritize this in the new tools. The new 3D brush calculates a position in space based on the curves closer to the cursor, and from that point, it applies its effect as a sphere.
Different Workflows
There are two main workflows for digital hair creation: procedural and destructive. A destructive workflow is perfect for hero characters, while a procedural pipeline excels at throughput – you can replicate and tweak hairdos in a more scalable fashion.
The destructive pipeline focuses on tools that allow artists to manually bring their vision to fruition. Hair strand by hair strand if needed. For that we need tools such as comb, pinch, puff, shrink, slide.
The procedural workflow, on the other hand, creates and shapes the hair based on parameters, such as clumpiness, length, density, kink, roughness, twist.
Which system to pick? Why not a combination of both?
Destructive Workflow
There is an old adage in the industry that goes roughly like: “just paint”. If artists want to edit the hair, they should be able to pick a brush, pick a hair, and comb it the way they want.
The tools that allow this are the best friends of an art-director. Instead of spending time fiddling with knobs and abstract parameters, the tool gives them a direct way to manipulate their subjects.
This is the initial focus of the hair project. The system should be able to support at least 120,000 hair strands edited at the same time. Artists should be able to add and remove hair, and transform them in diverse ways. The initial tool set available is:
Besides those, there are a few selection tools available – from a Selection Paint brush to different selection operators. They allow users to work in a small part of the hair to have more control, as well as adding quick random variations.
The next planned tools are: Cut, Smooth Distribution, Smooth Length, Smooth Selection.
Procedural Workflow
The Geometry Nodes project showed the potential of a procedural pipeline within the Blender workflow. Non-destructive modeling was possible before, but combining the existing modifiers with granular user controlled geometry nodes increased this exponentially.
The same benefits can be had for the new Curves objects. Given that the hair is just curves, and that curves are already supported in Geometry Nodes, this is possible from day one.
There is still a need for curves nodes focusing on hair use cases, like: children interpolation, hair parting, complex hairdos and non-straight hair types.
All the effects possible via the destructive tools should also be possible via nodes, allowing for a fully-procedural pipeline, or a mixed pipeline with guiding hairs enhanced with nodes.
At the moment generic curve effects are possible with the node system. The Project Heist is helping test this already to add messy hair: Objects using the same the curves data-block from the main hair object, but with a few Geometry Nodes modifiers on top to add extra randomness and more volume.
Procedural Destructive Tools
During the early stages of the hair development process, Andy was working with Simon Thommes to create a few “disposable” Geometry Nodes to add one-off effects to be applied as part of the destructive combing for Project Heist.
He would work with the existing tools, add a new Geometry Nodes modifier, tweak a few parameters, and apply the modifier. This included effects such as: Noise, Density Adjustments, Random Delete, Hair Resample, Thickness and Randomize Lengths.
It soon became clear that although some of those effects could become a widely-usable tool (e.g., resampling), other effects were unique to the look of the production (e.g., hair thickness which was defining the hair curve profile).
These tools might be specific to the production, but they also helped the development process. Even while developing the existing brushes, a lot of the time was spent going back and forth between the artists testing the features and the developers doing small adjustments. At the end of the day the core part of each brush was rather small.
To leverage the artist’s input as much as possible and give them tools to create pipeline specific effects an idea was born …
- Geometry Nodes based curve sculpting brushes.
- Geometry Nodes based curve operators.
This would also be beneficial for mesh modeling, as well as the prototype of new tools. There is no final design on how to integrate operator-specific inputs and outputs (such as selection and error messages) to the nodes, as well as how to have a separation between the brush engine and the operator logic.
This should be integrated with the Asset Browser system, as part of presets, together with regular brushes.
Next Steps
The new curves system is now officially in Blender, but it is still in its infancy. The team is now focusing on making the system exciting enough for a SIGGRAPH 2022 demo. As of now this includes a preliminary node based operator support, new tools for cutting the hair, to smooth it and a fill operator.
The next step is to support more hair specific Geometry Nodes, for the non-destructive pipeline. Finally we will need to work towards replacing the old curve system, including an edit mode for the new Curves object. There will be a task force / call for help once the project gets to this point, so more people can help porting the existing operators.
Try It Out
To test the new system download a daily build of Blender 3.3. Remember to check the documentation to read about the current limitations, and please report bugs if you find them.
Don’t forget to share your artwork using #b3d and #HairCurves in social media, so everyone can celebrate the new curves system together.
Support the Future of Blender
Donate to Blender by joining the Development Fund to support the Blender Foundation’s work on core development, maintenance, and new releases.
Hey there,
We are trying to export this to a alembic file with curve data to use in a hair simulation in the Unity engine. We cant export the curve object at all. Any idea on how to do this? It should work right ?
Looks good so far, cant wait to see the full implementation. Love the selection brush.
Amazing new features coming I can’t wait to try them!
I feel like you should work on implementing something that could convert hair mesh that artists have created, into particle hair, for example which can be done using XGEN in Maya.
I feel like most of the artists in Blender work in the more stylized art field so these tools are great, but we need some quick way (similar to xgen) to create a perfect hair shape based on a sculpted/modelled hair strand or piece.
I second the motion on isolating single strands when sculpting. It’s too cumbersome to select a single strand with the selection brush because you would have to resize the brush to a very small size, select the strand (with select mode set to curve) and then switch to comb brush and resize the brush again. I find myself repeating this action over and over and over again, to a point where I’m contemplating about learning XGen instead.
Have you guys seen the new hair system be used for stylized/cartoonish art?
https://blenderartists.org/t/the-big-blender-sculpt-mode-thread/1150731/10183
As awesome as the system is for detailed hair systems – I am somehow much more excited for the stylied stuff right now. :D
Hoe this gets the attention it deserves as well. @Tolkfan mentioned a few posts later that he wasn’t even able to convert it to geometry, yet.
I finally arrived at a fast particle hair workflow where I simply use a very rough style and cut with a couple of hundred parent hairs, apply some standard hair physics to make it realistic (it took months to find dynamic hair parameters that work in animations!) and finally tweak things with child settings. As I use a lot of cloth and hair I’ve found it way easier to sacrifice some fine control and let the physics engine do the work, even if I’m aiming at a still image.
I can’t see a lot of progress with implementing physics in geometry nodes, and I don’t want to have to comb every frame. This looks like it’s only going to be useful for very short hair at the moment. Still, it’s a step along the road I guess. Just don’t break particle hair, as has happened at times in the past.
Awesome ! the brushes look fun to use. Anything about the simulation side ?
Exciting to see some great progress on hair/grooming.
Looking forward to and hoping it’l be powerful/performant enough to handle fur creation for large creatures. Hoping to one day be able to create a fluffy mammoth without needing a super computer.
Hey blender team!, Idk what are the plans for the grooming of the guides, but it would be great to have the possibility to groom the guides in a node so we can have multiple nodes with diferents combs to change between :)
While it all looks great for still images I fear for the ‘elephant in the room’, simulation/animation. Both the ability to simulate realistic hair movement, while it largely maintains shape and styling and then quickly returns to a ‘static’ pose, but then also the ability to art direct at specific frames during the simulation, without a whole bunch of the hairs cutting into the face/eye/ear, etc, etc.
As the current system proves, treating hair as if its a cloth for animation doesn’t really work, so while having a mass of cool grooming tools is great, it’s of little use if it all just falls apart as soon as you try to animate it.
Great to see this happening, great work, guys! Spherical brush, selection paint, density brush, these are real pita-solvers for anybody who went serious with hair grooming in Blender in the past ;)
Great to see such a good progress in this area lately.
I know a lot of things are expected to be covered by nodes, but a few things from a vfx production perspective can also be something to keep in mind.
– Some sort of selection sets can be really handy. Many times in VFX production it’s not only about doing a realistic looking groom but also about matching one specifically. Having the ability to quickly select areas or specific hair strands can be really useful in this case (with varying density I guess it could be based on the underlying geo)
– As mentioned before, the guide/children workflow is convenient when working with time constraints while having to achieve specific results.
– Most VFX companies do this in a different way, but transferring grooms between characters is also something that’s used very frequently. More often than not people starting with some sort of base groom which makes sense when working with tough deadlines. Some of the transfers are not even relying on matching topology or UVs.
Excellent points, hopefully will be noticed.
I know that the Blender team always goes its own way. But I really hoped that the hair system would be inspired by a competitor and we would get more control based on curves. I hope I didn’t miss anything in the article and it will be implemented later.
It would be great if we could have some kind of hair shape keys, to make animations where e.g. the hair changes it style or length.com
It was amazing to watch this demo. Thank you for taking the time to explain each of the parameters, especially with the hair curve guide and tip selection filter + shortcuts.
3 Questions:
1. Is it possible to generate PARENT guides, and “fill” in-between point curves with “children”?
2. 14:47 – By the same logic of the (root) sliding curve ID over normal detection of the surface, could we have “collision detection” for tips? Just like in 2.79?
3. 18:58 – Are these nodes included in 3.3 or are they just available inside the downloadable .blend groom demo file?
This is looking great! I can’t wait for physics to arrive!
-Great work, you guys!
This is Hair Grooming~
This is RealTime Compositor~
Wow!!!
Blender 3.3!!!
Will You See EEVEE Next Updates In The Future???
But,Amazing!
I Especially liked it!
Thank You!
This is amazing. Thank you, team! But now I would like to see a demo of a longer hair in action. The demo looks pretty much usable for short hair, such as beard, eyebrows, etc.
One thing that I’m wondering is about hair children. Probably you want an operator to change children on the fly, but I think that a simple density children option would do the trick. For instance, an operator that increases the density (with children) globally or just locally at selected areas. Then a general “simplify” (or something like it) for hair to decrease the hair amount for viewport playblast.
What do you think?
The idea is that children and all similar procedural affects are implemented with geometry nodes. There are almost certainly more nodes needed to make that happen, but some things are already possible. In the future we can set up these node groups by default in some situations to make things more automatic, or ship them in a default asset bundle. Or we can go further and make features into builtin operators. The flexibility of the node system helps to make so much more possible though.
So happy that Blender started to see GN as replacement for hunderds of hundreds sneaky options everywhere… GN with proper generalization are much more powerfull concept, thanks for keeping it in focus!
I love the new hair system and I am very interested in its future. the spherical tool is excellent, I think it might be helpful to have a spherical gizmo for it so you can see where the sphere is in 3d space. and one question is whether the workflow of using guiding hairs and adding children will be handled fully in nodes?
Great work :)
Very cool guys!
Awesome progress.
But that “auto” icon in the density brush settings is awful! Are we back adding obscure pun icons that have to be learned? Why not make a “+/-” icon that actually explains what it does?
Honestly I absolutely LOVED a car icon for the auto mode. This is brilliant
Nothing brilliant about a word joke in icon form that doesnt translate in other languages, its just lazy.
I support this complaint. My first thought was what this weird icon means just before it was explained. The icon doesn’t translate well as metaphor for other languages. I hope there will be found a more elegant solution.
In order to prevent spam, comments are closed 7 days after the post is published. Feel free to continue the conversation on the forums.