7
$\begingroup$

My question touches the mathematical side of Blender more than the modelling one.

I am having a problem understanding how the 'local with parent' space in bone constraints works. I have looked through all the forums I have found, read all the manuals, and unfortunately I have not found a full answer. Also, the tooltip in Blender does not help.

I will try to explain the problem with some images that I hope will be helpful. Do not be afraid of the length of the post: it mostly consists of pictures. ;)

Let's assume we have a bone:

A bone in its rest position (in edit mode)

As you can see, this bone is in edit mode, and we see its local coordinate system. Below is the same bone in pose mode:

Bone in pose mode

(By the way, you can see that the coordinate systems are different. They are both right-handed, but the pose mode is rotated so that it has Y axis as up, which is different from the rest of Blender's modes which use Z axis as up. If someone can explain why, I would be grateful :-) )

Now, let us apply the 'Limit location constraint' to the bone with default settings and 'Local with Parent' space. The bone did not move. Now in pose mode set the Z coordinate of the bone to 1.0.

The bone changed its position not toward its Z axis but toward its Y axis. Bone with Z = 1

This is so far understandable as the bone moved toward its armature Z axis.

But now we add another bone to it and unselect its 'Connected' option in edit mode so that the child bone is not attached to its parent.

In edit mode it will look like this: Two bones in edit mode

And in pose mode we have something like this: enter image description here

And now apply exactly the same constraint to the second bone: 'Limit location' with default settings and 'Local with parent' pose space.

What we see is something like this: enter image description here

And here finally is the core of my question. Why does it behave like this? Why did the second bone move? Its translations are (0, 0, 0) in pose mode and the same in edit mode. If I set its Z = 1 in pose mode it will move UP like the first bone, so that is quite logical.

If someone could help me with understanding the problem I would be very grateful. The pictures are taken from Blender 2.68a, but I also checked with 2.70a and ancient 2.49b, and it works exactly the same with all three.

If I have been at all unclear or have posted too little data, just let me know.

Marcin

$\endgroup$
1
$\begingroup$

It looks like the second bone has a hidden initial transform of 1.0 in the y direction relative to the origin of the armature. So, it is already at 1.0y, and it movies 1.0z with its parent. Those hidden initial transforms are tricky.

EDIT: Oops, in armatures "Local with Parent" uses its position in edit mode rather than a hidden transform like in object mode.

$\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.