Copy rotation bone constraint

Question

Here is 3 bones with the same orientation. You can see the constraint stack for the Owner.


1 love
Reply
  • Tom Fransson(tfsuper3d) replied


    Bild 1.jpg

    1 love
  • Tom Fransson(tfsuper3d) replied

    If I rotate Target_02 45 degrees around local Y. And then rotate Target_01 around local X.Then the Owner will rotate around its local X. But, if I instead rotate Target_01 around local Z. Then the Owner will not rotate around its local Z.


    1 love
  • Tom Fransson(tfsuper3d) replied


    Bild 2.jpg

    1 love
  • Tom Fransson(tfsuper3d) replied


    Bild 3.jpg

    1 love
  • Tom Fransson(tfsuper3d) replied

    Why is that? I don't understand how the calculations are made.

    1 love
  • Martin Bergwerf replied

    Hi Tom tfsuper3d ,

    That is because of the order, that is set to default, in the Constraints, meaning Euler XYZ, which first calculates the Z Rotation, then the Y and finally the X Rotation.

    Try changing the orders, if you make both ZYX, the opposite will be happening (Local Z, Global X).

    1 love
  • Tom Fransson(tfsuper3d) replied

    Hi Martin,

    Okay I see. Yea I found Wayne's explanation about Euler rotations on cgcookie's youtube channel. And if I understand it right. For Euler XYZ order, then if I rotate Target_02 -90 or 90 degrees around local Y. Then we get a gimbal lock. And as a consequence of this, when I rotate Target_01 around local Z or local X we get the same rotation for the Owner (almost, atleast around the same axis)  because there the X and Z axis are parallel to eachother due to the Target_02 rotation. Maybe I'm totally wrong? :)

    1 love
  • Martin Bergwerf replied

    Hi Tom,

    There is no Gimbal Lock in your case.

    With the default Euler XYZ, the Z-Rotation gets evaluated first and then the Y-Rotation and lastly the X-Rotation, so:

    in your first example, the Y-Rotation of Target_02 gets done first, and then the X-Rotation of Target_01 (there is no Z-Rotation here).

    in your second example, the Z-Rotation of Target_01 gets calculated first and then the Y-Rotation of Target_02 (there is no X-Rotation now).

    1 love
  • Tom Fransson(tfsuper3d) replied

    Hi Martin

    You mean my first example this one:

    If I rotate Target_02 45 degrees around local Y. And then rotate Target_01 around local X.Then the Owner will rotate around its local X. But, if I instead rotate Target_01 around local Z. Then the Owner will not rotate around its local Z.

    And my second this one:

    For Euler XYZ order, then if I rotate Target_02 -90 or 90 degrees around local Y. Then we get a gimbal lock. And as a consequence of this, when I rotate Target_01 around local Z or local X

    Am I right? I'm starting to get abit lost (and it is entirely my own fault), if your wondering :)





     




    1 love
  • Dwayne Savage(dillenbata3) replied

    First, you are rotating on global y not local y based on the images. Rotating on local y would just roll the bone since local y is from the head to the tail of the bone.

    Second, It is a gimble problem, not necessarily gimble lock. It has to do with orientation vs rotation or in other words the point you start a rotation vs the actual rotation. Reset all bones rotation. Goto gizmo drop-down icon(it's to the left of the overlays icon. If I remember correctly it looks like a bow and arrow) check rotate and change default to gimble. Now when you click on the bone it will show you the gimble(true orientation) now both of your constraints are set to add so they add to owners own orientation. Now rotate both bones like before. Then click on owner to see how the gimble looks. Now do the final y rotation. It should follow the gimble's y path. Hopefully that helps to see what is happening. 

  • Dwayne Savage(dillenbata3) replied

    Side note: you are correct the if you are using default Euler(XYZ) and the orientation is 0,0,0 then rotating -90 or 90 on the y will give a gimble lock. 

  • Martin Bergwerf replied

    Hi Tom,

    Sorry I wasn't very clear. I meant:

    First example: "If I rotate Target_02 45 degrees around local Y. And then rotate Target_01 around local X.Then the Owner will rotate around its local X" (because the Y rotation is evaluated before the X Rotation)

    Second: "if I instead rotate Target_01 around local Z. Then the Owner will not rotate around its local Z."  (because the Z Rotation is evaluated before the Y Rotation)



    1 love
  • Tom Fransson(tfsuper3d) replied

    At this moment Euler rotations is abit too hard for me. But both of you have been very helpful and I'm grateful. At some point I have to learn this but for now I will just let everything you both have said sink in. Thank you

    • 👍🏼
    1 love
  • Dwayne Savage(dillenbata3) replied

    This video helped me a lot: it's part of the humane rigging series which is for a much older version of Blender. https://youtu.be/SZE_KOjreAs?si=XaqVfY3o0OUkJPsE

    Sir Wade's video on gimble lock is good too, but he is using Maya, but the information is the same. That's where I got the idea for using the gimble transform orientation that I posted earlier. https://youtu.be/XCh-yEkHPMo?si=ZAClhryB_mwaCrnS