Hair simulation has been reported as a problem for years and years and years. I’m wondering if maybe something new is possible.
To get a reasonable simulation, characters have to be scaled up 10x. We can shrink cloth back down using .pc2 export and Mesh Cache. But it doesn’t work with Particles. Or Curves. And converting Particle Hair to Mesh to Curves and then extruding a circle as a cross-section and then back to Mesh for a cloth sim is…a LOT of vertices.
Has anything improved? Is there a Geometry Nodes solution since that seems to be the entire focus of Blender development, and not fixing problems that are a problem year after year?
Is there any solution to the “children not being included in collisions” problem that I first saw reported in 2018?
Thanks for reading and hopefully coming up with something I haven’t tried.
From all of my investigations and testing, when it comes to good quality hair sim, nothing has really changed.
While I’ve not gone back to refine things yet, for short-ish hair I got some fairly OK results using cloth sim on mesh strips which then drives the main mesh hair strips that are replaced by a whole mass of curves using GeoNodes.
But that still leaves a lot of collision problems with cloth sims and ‘hairs’ likely cutting through any character mesh the moment one tries to do the same with long hair. As such, at this stage I’ve not tried long hair.
As things stand, the ‘solution’ is basically going to be (hopefully) the new simulation system based around GeoNodes.
Having said that, the earliest that is going to happen will be Blender 4.0 at the end of the year and even then it could still not be till next year.
The amount of hours I have invested in solving a problem that shouldn’t be a problem in Blender in 2023 is mind boggling. 30+ hours and counting. This is the latest render using hair converted to mesh converted to curves, a pentagon cross section added in curves, converted back to mesh and simulated as cloth.
I have so many grievances about Blender character physics.
last time they’ve made a huge announcement on hair particle improvements…I was like: “Is it really happening!!!” , and when I watched the video on what was improved, I thought exactly what you are explaining here… haha
I guess we have to wait for the last questionable feature to be tossed on top of the pile until we see core-improvements of such magnitude.
Can I ask what scale you did your demos at? It looks like the character must have been really large for the hairs not to be jittering.
Your demos are really good. But I’m guessing the successes aren’t showing the stuff that wouldn’t work.
The child hairs not respecting collision is frustrating. I use the crazy twirling dance move as my test animation because it’s energetic like a person. And collision detection fails a lot.
The scaling issue is a massive show stopper in a studio production where environments are city sized. That’s a consistent problem with Blender, where the assumption is 1 artist is in total control of everything. Rather than someone who’s a small piece of a bigger production and where they can’t just say “Let’s scale the whole world up.”
The declaration of “The New Hair System” and then it turning out to be a huge nothing that could be done by other means already, is so frustrating. It’s so profoundly disappointing I just want to yell at everyone who is excitedly promoting something we could already do on YouTube.
And people getting excited over using absurdly complex Geometry Node trees to accomplish stuff that should be part of the overall GUI without having to put a bunch of puzzle pieces together is especially obnoxious. It’s like buying a car, and then being shown a machine shop and the salesman saying “Now here’s all you need to build it yourself.”
This setting is helpful. Especially prevents explosion. You must do this before grooming in particle edit. Check the Advanced box on the particles panel. In hair->physics->integration change the method to Verlet or RK4.
I have scaled a character up to 15 feet tall (about 5 meters) for cloth animation because small distance settings made a noticeable space between clothes and character. Dancing animation at my Vimeo channel. I haven’t tried cloth since version 2.x.
I never would have thought of clicking the “advanced” checkbox and looking for the Integration option.
When I did hair at the normal human size, the hairs vibrate and jump all over the place. You’ve given me some new stuff to look for. All other physics need to be done at 10x normal to move the decimal place of the settings over one digit. It would certainly help if this could be done at normal size.
I have disciplined cloth. I’m working on doing the same with hair as a mesh, but it’s super slow to sim. All the cloth in the above tests are a single mesh, because self collision works better at small distances. The key is weight painting the pin group. It’s magical. This is a previous character that I had to rebuild because of confusing Reallusion licensing. The characters that we make with Character Creator BELONG to Reallusion, not us. I’ll never use a product of theirs again.
Yup, it’s been annoying me for ages. Whenever I see final rendered images or any character with hair, my first thought is always, “yeah, that looks great, NOW animate it…”
Of course so much is just done as a single image and hence all the old or new hair tools largely worked fine.
I really wish when they started with the new GeoNodes hair, that they mostly started with simulation and ‘art direction’ controls, but since its first use was on Charged, a character that needed no simulation and doesn’t even have eyelashes as far as I can tell. We are left waiting even longer for some new to replace a decade old, half broken system.
What is eruption? Eruption is unnatural movement often pushing hair outward. Eruptions can be seen well in the video linked above in the rear view when Paige returns to an upright pose after bending forward.
What causes eruptions? I believe this happens when some hair is inside the collision distance and is crowded or dense there. The program tries to move the hair out of the collision distance but is thwarted by crowding. My evidence is that eruption is worse with large collision distances and better with small ones. That small and the hair is too close to the head for most styles.
Very small collision distance also fixes most perpetual motion jitters but larger distance is the main thing to hide child hair penetration.
In my investigations I was seeking to understand what settings do, what causes things to happen, and use that knowledge to get the best results. Up-scaling may be the only solution but my goal was to tame sim hair at life size scale and find a minimum set of controls needed for reasonable control of the hair sim.
The result is a scalable, baked curve animation that you can apply geonodes on. The hackiest part is, that the alembic only works in the viewport, but not in refreshing in render, so you have to export a pointcache for it. I’ve wrote down the exact steps that you need in the comments. For the rest you can follow the video.
Here are my steps to make it work in the render:
Once you got out your alembic hair and imported into your scene, follow these steps: 1. Select the animated hair/curves 2. Go to File>Export>PC2 (if you dont have it there, you should allow it in preferences/addons) 3. At the export settings set your framerange to match your timeline (start - end) and uncheck the flip y axis thing, because it will mess up your position when you reimport it. 4. Export your PointCache file somewhere where you can find it 5. Go to the modifiers tab, you can either delete “MeshSeqeuenceCache” or just turn off its visibility (both viewport and render) and leave it there just as it was. 6. Add “MeshCache” modifier 7. In the MeshCache modifier options select Format: PC2, Set file path to the cache file that you saved in step 4. Now if you add geonodes modifier, or depth to the curves in the object data properties, it should update on every frame properly!
Thanks I’ll try to follow that and see if it helps. I think I’ll figure out how to run the hair at 1x scale, unlike cloth. I almost have it working. But I haven’t gotten the collision down yet. I’m using the MeshCache trick with the clothing and it seems to be working OK.
I almost have it working. I’m using a duplicate body with a much smaller head, and a “scalp object” for the hair that has no collision detection. The advanced/physics tip makes a huge difference. I just had to reinstall Windows on another of our computers along with a lot of software and 500 gigs of files that took forever to back up. So I’m just getting back to this after a couple of days.
Some new glitchiness on the hair, and I hope I can figure it out. Like why does it decide to just go straight and how do I get it to respect collision detection better? New render. Now at 1x scale, cloth using MeshCache and MDD rendered at 30x. 10x isn’t accurate enough.
Child hair: We’re stuck with that. It does not use sim so penetration is inevitable. The hair style can hide it under other hair where it won’t be seen sometimes. Edit in post process to remove it for still pictures.
Hopefully a simulation for the new curve geo-node hair will have an ability for all hairs to participate in the sim and to have the styling currently reserved for child hair.
I’ve been trying the sim with Physics Tab → Collision → Single Sided and Override Normals off. Collision on the character of course. That helps eruptons a lot. Still investigating side effects. Some damping helps perpetual motion. No time for that for a while.
Scale the scalp object slightly off the character’s body. When you turn on collisions, it doesn’t freak out.
Only use ONE collision object for the hair. I made a duplicate of the body and scaled the skin outside of the clothing.
Collision object should have friction set really high, like 80. And inner should be set to like .25 for some reason.
In field weights, an empty Effector Collection seems to help prevent explody hair.
Smallest possible distance under Collisions on the emitter object.
Pin Goal Strength let’s you maintain hair styling if you paint the pin strength in Particle Edit.
Scaled cloth sims using MeshCache do not work for collision objects.
I didn’t use the Physics mod Splododyne recommended on this, one but it may still be useful. Everything is stock settings on the Dynamics, including Quality set at 5 and Collisions quality set at 2.
That looks good. The small collision distance has a price though. The hair will fit tightly to the head and that eliminates many hair styles. I set the collision distance for the hair and the collider, character’s mesh, to the same values when experimenting. That eliminates any strangeness from a difference but might not work when using cloth, rigid body … also since they might need different distances.
I’m giving up on dynamic hair until the curve/geo-hair with dynamics is stable. I’ve said that before but I’m not achieving my goals and the current hair will be gone when the new one is finished so there’s no point in this.
Once I got the hair working without exploding, I did a little styling.
Pin weight, a second “short” hair particle system that isn’t dynamic that is blended in, and 30 children instead of 10 appears to solve that problem. Gave it a little waviness too.
Also, you must use a separate scalp object, and not the actual body for the hair. This only works when the scalp is scaled very slightly above the body mesh. The body mesh is the collision object, not the scalp and that makes a huge difference.
I’m working on the cloth tutorial this week. I’ll probably work on a hair tutorial next week. I learned a lot on this.
I’ll believe the new one is finished when it’s finished.