show transformation on ik bones (resolved)

Uhm well, I know it’s possible, because I’ve already done it before, but I just forget how I achieved it… I wanna use a basic armature, animate it, then extrude any bone on the x axis and use their loc/rot to run an animation I did with the basic armature. So basically I wanna move a leg first by using the ik functions of the basic armature but then I wanna move the legs in perfectly the same way by using my extruded bones (and deleting the basic armature bones) Now I tried it again and I notice that the transformation of a rotated bone does not have any effect on the loc/rot properties on the bones that are moved also by it. And I forgot how to fix that…

I hope you can help me, and I hope you can understand my problem, if you don’t , please post it, otherwise I’ll never get an answer… thank you!

mfG,
kiriri

Well it definitely is a bit confusing. Anyway, maybe if you turn on the Axes option in the Display tab of the Armature’s properties you’ll be able to have a better angle of view on what’s happening with the transformations. Also, bones in an IK chain are affected all together by the chain reaction, so they do change in loc/rot but for that the IK chain needs to be a valid one, by checking to see if all parent/child bone relationships are ok.

I attached an example .blend … I want to create this same action without the ik bones (bone.008, bone.001, bone .002 and bone.003) by using the positions the extruded bones are in when they are affected by the ik chain. But if I insert their loc/rot keyframe on the rot keyframes of the ik-chain bone (bone.001 in this case) and then delete that bone, the action is not running because the values of the extruded bone keys are saved as 0.
Is it now clearer?

Attachments

blenderexamplerig.blend (420 KB)

Blender gives priority to the armature’s hierarchy. If it notices the relations between the bones is suddenly broken, then it will not play already recorded animations. This is what I’m perceiving the problem is all about. Does this help you?

particially… new , very simple example, I have bone one and bone two in an ik chain. I rotate bone 1 for 30 degrees. If I select bone 1 now and press n for the property window I will notice that the location and rotation has changed. If I now select bone 2, which was also moved and rotated due to the ik chain , I notice that any value is still the same even though it is on a completely different location. Therefore, if I try to use the location or rotation of that bone in an animation, it will not move unless the bone that created the transformation on that bone (in this case the first bone, that I rotated for 30 degrees) exists.

Of course in the complex armature I mentioned before I could just rotate the extruded bones around the extruded bone at the root of the ‘ik-bone’ above, but with this techniques I wouldn’t be able to use more complex rigging techniques such as the foot rolling/tumbling or even the shoulders properly.

XD I think I really gotta learn how to explain myself, it’s always the same thing with me :smiley:

These are not easy topics, rigging I mean, so it’s very ok to have difficulty expressing one self. :stuck_out_tongue:

First of, we are talking about Pose Mode right? So if you rotate a bone in Pose Mode only its rotation should be affected. That’s the part I don’t understand in your experiment. Also, any value is still the same for bone2 because bones are evaluated in their local space. If you check the bone globally it will have changed.

wow, now I finally realized my exact problem : I want to save the global transformation of a bone in the action editor after being influenced by a bone that is higher in the ik chain, so that I can delete that bone that is higher in the ik chain, but still have the same results with my other bone. How do I do that?

The only way I’m thinking of how to do that (without using Python) is this:

  1. Build an armature the way you want it to be and then duplicate it.
  2. Erase all bones in the second armature except the one you don’t want to be delete in the future.
  3. Now add a Copy Transforms to that bone and point it to mimic the correspondent bone on the first armature.
  4. Animate the first armature (the bone in the second armature will mimic).
  5. Now either place keyframes for the second armature bone and delete the first armature or do the Apply Pose as Rest Pose to the bone in the second armature.

placing keyframes doesn’t work but you indirectly pointed out the solution XDXDXD if you press ctr + a you can not only choose the restpose, you can also choose ‘apply visual transformation to pose’ ! exactly what I needed! If you couple this with limited distance to the bone that is theoretically higher up in the ik chain, but in this case not connected or parented, you get a smooth curve-movement without having to use the curve editor or inserting frame for frame! I think this is it! With this technique everyone should be able to use drivers and other stuff on x-axis aligned bones. Awesome!

I’ll have to check whether really everything works out like this, but for now I think this is resolved, eh? thank you very much!!!

You’re right, it does work, I didn’t think of applying visual transforms. You can use the .blend in attachment, it’s a 2.53 file, open it and follow these steps:

  1. The bone “a2_b2” in the second armature, called “a2”, is already selected and action “a2_rot” is showing frame 1. From here, do CTRL+A and choose Apply Visual Transform to Pose.
  2. Insert loc/rot keyframes.
  3. Jump to frame 24. Again CTRL+A and AVTP and insert loc/rot keyframes.
  4. Select the first armature, called “a1”, and delete it. Also remove the constraint from bone “a2_b2”.

I guess this is enough :slight_smile:

Attachments

vistransf_ik.blend (301 KB)