4
$\begingroup$

I am making a rig that transfers motion from one mesh to another via bones. This is for complex mesh hair strands. The base mesh has a cloth sim on it. A Chain of bones are constrained to follow this mesh. Another version of the mesh is then driven by this bone armature.

It works by having a vertex group of a horizontal loop at the top of each bone. The bone has a Copy Rotation constraint to this group, and an IK to the next group down (at its tip). The bones are not using inherit rotation. enter image description here The copy rot is giving strange results. The bones seem to get ~45 degree rotation around local Y. There is also X and Z rotation, but it is overridden by the IK constraint. I am trying to figure out where this rotation is coming from, and how I get rid of it. I do not want things to rotate until the simmed mesh (red in this picture) starts moving. This problem occurs regardless of the Space I use for the Copy Rot. Different combinations of spaces give different results, but all are wrong.

Where is this extra rotation coming from?

$\endgroup$
2
+50
$\begingroup$

There needs to be a bone for every segment like this:

enter image description here

The bones are connected into single chain and using inherit rotation (but this is irrelevant because it is overwritten with constraints)

In edit mode the bones were aligned with Ctrl+N > Cursor with cursor being in the center of mass of the bone chain.

Then the red mesh (the reference hair strand) has a vertex group for each vertex on the bone chain containing that single vertex:

enter image description here

Vertex0 is at the root.

Here is setup of every single bone exept the root bone. The root has copy location from Vertex0 as a first extra constraint in the stack:

enter image description here

The bones will not rotate until you simulate the red mesh now. They won't follow the mesh perfectly (that's because vertex normals and how they work) but they will follow closely. To make the chain follow perfectly the bones would have to target polygons instead of vertices (it's not supported, they can target only vertices - with vertex groups).

Here is a blend with the beginning of hair rigged:

$\endgroup$
  • $\begingroup$ How DO vertex normals work? I had skipped trying this before because I was under the impression that a single vertex could not express rotation. $\endgroup$ – Drudge May 7 '15 at 10:31
  • 1
    $\begingroup$ @Drudge display them in properties panel (N) under Mesh Display. It is the normalized average of normals of the faces that contain that vertex (if smooth shaded). Therefore a vertex normal is affected by surrounding vertices. $\endgroup$ – Jaroslav Jerryno Novotny May 7 '15 at 10:40
  • $\begingroup$ Well, I tried it, and I'm getting this, which is insane: blend-exchange.giantcowfilms.com/b/223 My settings don't seem to be any different, so I have no idea why my setup is tearing everywhere? I tried turning off IK, and observed that in pose mode, my bone chain went in a totally different direction from in edit mode. $\endgroup$ – Drudge May 8 '15 at 5:28

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.