3
$\begingroup$

Target : I intend to have long lady hair that go swirling in the wind. I am trying to achieve that through hair dynamics.

Problem: Hair are going through mesh(body and head). I am using blender 2.77a. I have read other existing solutions, but none of them helped.

Solution 1: I am able to achieve mesh collisions(using some other object)with hair particles. But when I am placing some proxy object under head, thats not helping. I have tried collisions to be as slow as possible.Here's the link to similar approach. Stop hair from falling through emitter mesh

Solution 2: I have also tried using force field but that didn't help either. As when wind comes into play, hair particle stop respecting body mesh. I am newbie to the blender world, and I would appreciate any help from blender community.

enter image description here

$\endgroup$
  • 3
    $\begingroup$ Possible duplicate of Stop hair from falling through emitter mesh $\endgroup$ – Demons Fate Sep 1 '16 at 13:58
  • $\begingroup$ Please read comments below. Person finally switched to polygon hair. However as mentioned I have tried that solution as well. $\endgroup$ – code_guri Sep 1 '16 at 14:03
  • $\begingroup$ No you don't need to switsch to polygon hair. i will write you a more complex tutorial on this thread. Just give me some minutes :) $\endgroup$ – Demons Fate Sep 1 '16 at 14:06
4
$\begingroup$

Collision with the emitter is not supported yet (2.77).

But there is a workaround for this problem. So you want to collide the hair with the emitter but there is no self collision? Well but collision with other objects works, right? Right! So you simply have to duplicate the entire emitter mesh and set it to a "fake self collider!

How it is done:

  • Step 1: Duplicate the emitter mesh (select the Mesh and hit shift+D. Right Click to place the mesh at the same position as the original mesh).
  • Step 2: Go to the Object Menu and deselect all Ray Visibilities. This way the duplication will not get rendered.
    enter image description here
  • Step 2.5 (Optional): Now we want to eliminate the visibility of the duplication in the viewport. But simply restricting the view port visibility (by clicking the eye in the outliner) is not possible, because this way the collision may not be triggered.
    Change the display mode from "textured" to "bounds" in the Object Display Settings. This way your duplicated mesh will only get displayed as a box and will not generate any annoying clipping artifacts.
    enter image description here
  • Step 3: Enable collision on the duplicated object.
    enter image description here
  • Step 4: Make sure everything is set up properly! In the modifier panel, the original emitter mesh should have the Armature at first position, followed by the Particles/Hair and followed by Subsurf.
    enter image description here
  • Step 5: Also make sure the duplicated mesh has no Particle/Hair modifier. If it has one, you have to delete it in the particle panel!
    enter image description here

Now your hair should collide correctly with the emitter!

If the hair still bugs into the body, try the following:
-in the hair dynamics setting, raise the "Quality" Amount (for me normally 5 Steps works just fine).
-in the collision settings of the collider, raise the "Outer face thickness" in the "Soft Body and Cloth" Settings.
-Raise the number of Subdivisions of the collider mesh (As i know, the collision does not get calculated by the faces of the collider but instead by the edges. If your mesh is to low poly the hair will slip through it)
-Raise the number of hair "segments" in the hair emitter settings.

$\endgroup$
  • $\begingroup$ Hi Demon, collisions does seem to be happening. But it takes an hour to bake. Is it normal ? $\endgroup$ – code_guri Sep 7 '16 at 13:05
  • $\begingroup$ this depends highly on your hardware and complexity of the scene (and length of animation). if you want more information i recomend opening a new question with the topic "how to speed up cycles hair animation baking" $\endgroup$ – Demons Fate Sep 7 '16 at 14:09
0
$\begingroup$

Well, actually hair collision DOES work.

The issue is...that the calculations are not precise enough to work in the default scale of scenes in blender (1U=Meter). To get HairDynamics to collide properly. You have to scale up the entire model (e.g. 1.75m human) by 10 or 12 times. Then even Steps=1 is enough to get porper collision.

One issue that still remains is:

that the hair will ignore the part of the collision mesh that is being "covered" by the emitter(scalp).

I also tried forcefields as you suggested. But the hair never comes to a rest. It keeps wiggeling around like in strong wind. Even with excessive amounts of damping.

What I did is the following:

I weighted the first 4 of 25 vertices (on 50cm long hair) of the hairstrands to 1.0...rest of the hair strands gets weight 0.0

Then, in HairDynamics..I set GoalWeight (under Pinning) to 0.02.

That way...the part of the Hair that ignored the collision mesh earlier stays still...while the rest of the Hair properly collide with the shoulders and the back of the character.

Well, actually the problematic hairpart is still sinking into the mesh..but due to the GoalWeight..it sinks so slowly that one can run a Simulation for hundreds of frames till it starts to sink into the mesh again. (Enough for most scenes)

The only issue is that the upper part of the hair looks really "static" now. (I'll propably just put 'hairclips' or some sort of 'bandana' there, so that it makes more sense to the eye ;)

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.