Rigging bug? Weird relationships between bones. My brain explodes (VIDEO+Screenshot)

If this is not a bug then my brain will explode while calculationg all of the logical relationships between the bones.


I have here three examples. And in the left two examples where upper bones are parented to the bones below everything works as expected but in third example on a right corner i have a problem because the green bone (Bone.003) not just copying the local rotation of the upper bone (Bone.004) but also the world rotation, when i rotate that bottom bone. Why? I didnt expect it because the green bone (Bone.003) copying only local space rotation of the upper bone (Bone.004) and NOT THE WORLD ROTATION OF THE UPPER BONE (only local) but for some reason when i rotate the bone below, the green bone (Bone.003) rotates as well. The same thing with copy location constrain that i was trying. Yes i know that in third example ( on the right corner) the upper bone is not parented to the bone below but its copying the rotation and location of that bone. Does this mean that if the upper bone not parented to the bottom bone but copying the rot and location of that bone, then the upper bone inheriting the local space from the bone below? Or its just a bug? Why in the first two examples on the left green bones does not rotates if bottom bones rotated but in third example it does? I think its not a logical relationship beetween bones.

HERE IS THE SHORT VIDEO WHERE I EXPLAIN THE PROBLEM -

So is it a bug guys? If it is, let me know and i will report it. Thanks

I don’t have my machine with me on my holiday to check this, it will have to wait a while.

Cheers, Clock.

Ok, mate. I will be waiting because its really bugging me

Hi,

try using pose space to local space.

Hadrien

I am not exactly sure what your wanting to do…
after all you do have a Copy Rotation on that bone…
so the Rotation ‘is’ going to be copied…
and thus transfered down the line to the next bone that also has a ‘copy rotation’ on it…

If your wanting to Isolate Rotation then you need to use a Parent bone and avoid using the ‘copy rotation’ Constraint…

like this…

Isolating Rotation_002.blend (833 KB)

No, it’s not a bug.

If you turn off the copy location constraint, you can figure out why this happens this way. You should see that when bone.005 rotates, bone.004 will copy that rotation and then bone.003 copies that in turn. With the copy location on, it looks like bone.004 is not rotating when bone.005 is rotated, when in fact it is. Any rotation to bone.005 or bone .004 will affect bone.003.

The results are exactly as I would expect with the way you have the constraints set up.

Not stated is what you are trying to accomplish. When we know that, advice on how to parent or constrain bones to get the results you want can be given.

I think guys you didn’t watch it properly. Why I gave you first two examples?

DanPro

You said: " You should see that when bone.005 rotates, bone.004 will copy that rotation and then bone.003 copies that in turn."

Yes it should be like that but only if the Bone 003 was copying the world space and not the local space!!!

Did you watch examples on the left? It makes no sense, since Bone 003 copying only local space, but in fact for some reason it copied the world space ( only in third example on the right). I gave two examples in the left corner not just because I had nothing to do, but to show you that whenever I grab Bones 005 the green bone will not be rotated because it’s set to local space ( in two examples on the left). Though in those examples Bone 004 also parented ( doesn’t have copy loc and rot constrain though, but it doesn’t matter, since it’s parented it’s also copying loc,rot) to Bone 005 so if somebody doesn’t know difference between local and world space ( I am not talking about you guys) he may say that Bone 003 should be rotated as well but it doesn’t happens in first two examples, and it’s correct, because Bone003 constrain set to local and not to the world space.

Thanks, hopefully somebody can clarify to me if this is not the bug then why in left two examples Bone003 doesn’t rotates and in third example it does ( And copy loc and rot constrain in third example on the Bone 004 shouldn’t make any difference, (because Bone003 copying only local space as I said many times before) and in left two examples Bone 004 also parented but the behaviour is different - Bone003 doesn’t rotates)

The two left example do not rotate because their rotations are because of parenting, therefore no local rotations have happened. The right one rotates because the transform matrices have changed because of the copy rotation constraints.

I suggest you review Humane Rigging by Nathan Vegdahl.

"The right one rotates because the transform matrices have changed because of the copy rotation constraints. "

So why copy rot constrain of the Bone 004 should affect the local space of this bone but parenting not ( if this bone was parented to Bone005). To me Bone004 should only copy the rotation and location of the Bone 005 but not to change its own local space because of that constrain. It doesnt make sense. In left two examples it makes sense but in the right example its not.

Where in the Blender wikipedia or any manuals said that Bone that has copy rot and location constrain not only copying the location and rotation of the bone it constrained to but ALSO changing its own local space because of that constrain?

Hopefully guys you still have patience to explain me this, because i may be wrong of course as well. Btw Nathan Vegdahl doesnt explain everything because its impossible to cover every tiny detail.

I’m heading off to work now, but I’ll try to answer when I am done. Unless someone else would like to take a stab at it…

Ok mate. I will be waiting

I’ve been trying to think of a simple way to explain this so it makes sense. I know some of these concepts can be a bit mind bending when you are first learning rigging. I have sympathy and empathy for that. I’ve been there many times before.

No, he does not teach everything. In this case, however, Nathan explains all of the topics that are holding you back very well and often throughout the course.

  1. Parent child relationships. You have a hang up here. I can’t explain it better then Nathan does.

    -Moving a parent does not affect the local transforms of the child. The child can be thought of living within the
    space of the parent.

  2. Local Space and World Space. You have another hang up here. Again, I can’t explain it better then Nathan does.

  3. Transform Matrices. Again, Nathan explains how constraints affect the transform matrices of bones when using
    constraints.

In anycase, there is a simple solution (also brought up often in Humane rigging, parents) to the left hand example.

Add a new bone at the same location and orientation of bone.004. Parent this new bone to bone.004 and change the copy rotation of bone.003 to copy the rotation of this new bone instead.

The right and left example will then work the same.


I resized “bone.004” for clarity. The small bone (with constraints) is now the parent of the larger top bone. The new top bone is parented with Keep Offset.

Good luck!

Thanks Dan Pro, but I know way around it, the important thing was to understand or find any info why or if really constrain can change the local space of the bone that has this constrain. So you said that Nathan explains this. But in what part. I will watch again his series , but to know in what part he sais that copy loc and rot constrains not only copying transforms but do something else ( like affecting space of the bone) can be helpful. Thanks again. If I will not find this info it will still look suspicious to me

And btw you said i have a hang up 1) with parent child relationships and 2) i have hang up with a world and local space. But in fact i dont have a problems with this. I have a problem only with that single copy rotation constrain of the Bone 004 which for some reason not only copied the rotation of the bone its constrained to but the Bone changed its own local space because of that constrain

So you said that Nathan explains this. But in what part.

watch first 5 min of the video… for parent child relationships and how they effect parent child objects and bones…

watch the whole video to understand some concepts of why certain things should be done a certain way…

Also in this video…

Nathan goes over more concepts of Space and transformations…

I personally constantly go back to these videos to remind myself of these concepts when ever I start to get ‘fuzzy’ about Rigging, Constraints, Parenting, and Space…

Okay so after watching your video several times… and Nathans video about Parenting…

it comes down to simply this…

Space…

So with the first two Bones sets (from Left to Right) that you have in your video…
those bone sets are ‘parented’ to another bone and in fact exist in a Mathematically separate space than their ‘Copy Rotation’ bone counter parts…

The last bone set you have… this is not true…

The Top bone in the 3rd bone set exist in the very same ‘mathematical Space’ as it’s ‘Copy Rotation’ counter part…

therefore…

In the first two instances you have an easy way to select which space you wish for those top bones to ‘exist in’ in the third set you have taken away that option by using Constraints…

The only solution left to you is to place either the Top bone in a Parent child relationship… or the ‘Copy Rotation’ counter part bone in a Parent Child relationship…

There by… providing a separate mathematical ‘space’ separation for the the 2 bones involved…

Remember that ‘World Space’ and ‘Local Space’ Can not be two separate things without having another ‘Space’ to choose from…

Here’s a file to show you how to Isolate Rotation and still get the result you want…

Isolating Rotation_003.blend (836 KB)