About IK-FK arms

While testing with Alambrito, more precisely, with Alambrito’s arms, I ran into the old problem of going from IK to FK and viceversa.
Common arm setups include either two chains, one for IK and the other for FK (and also deform the mesh) or three chains, one for IK, second for FK and a third for deforming the mesh. Deforming chain takes the pose of IK or FK chain depending on the location of a slider that drives the influences of a couple of Copy Rotation constraints.
Now, for this to work smoothly, we have to be very careful about how the arms are set up or we are likely to suffer several annoyances when switching from IK to FK and the opposite.
To help keep track of these errors I prepared the following checklist of little details we have to take care of when rigging an IK-FK arm, here it comes:
All these considerations about roll are for the bones belonging to the IK chain (and the homologue in FK and deformation chains), speaking of an arm-forearm chain only these two bones and the pole need to follow these indications.
One easy way to detect problems in our chains is to pose them exactly the same (Copy Visual Rotation) and switch from FK to IK and the other way round quickly, NO CHANGE SHOULD BE NOTICED IN THE ARM. If change is noticed, typically a twist at the shoulder or a difference at the elbow it means we forgot something from the checklist.
One more detail. When using a three chains setup, I have noticed that there is always a minor problem. If we switch slowly from FK to IK it is still possible to notice the bones going apart from the pose and then come back. This is a secondary effect only visible in three chains setups, in a two chains setup it doesn’t happen. However if everything else is right, there should not be any difference between the initial and final poses. So if the switch is done in one frame nothing should be noticed.
As a suggestion, the distance the slider have to slide, should not be longer than 1 blender unit. This way if we press CTRL while dragging the slider (so it jumps 1 blender unit), we will not notice this secondary effect and we can compare initial and final poses much more easily..
Anyway, hope this helps and Merry Christmas !


January 16th, 2009 at 2:23 pm
Hello malefico. this is really nice research.
What do you think about Nathan`s approach (also advised in Peach (BBB) rigging tutorial) that X axe for the rotations is the main and primary so should be positioned according to global Z referring to T character position?
It is true that Blender does not have possibility to set up rotation axes order (like Maya) and general order is XYZ (if I am not wrong). You can see Nathan`s standard arms axes orientation for example his bipedrig here: http://blenderartists.org/forum/showthread.php?t=131079&highlight=biped+rig
More interesting this question is concerning Blender 2.5 where AnimSys2 introduces Eulers, much better solution for animators.
January 19th, 2009 at 10:15 am
hey JiriH thanks for that ! I must admit I was rather ignorant about that X to Z aligning rule, but I think it’s worth following that advice. My aproach has always been trial and error, so I might have missed some theorical concepts and in the end just used what worked for me.
Animato (animsys2 now in 2.5 branch) indeed introduces Eulers as an alternative for Quaternions, but I think that is useful just in a few situations and only for user-friendlyness purposes as Eulers are easier to understand. Quaternions were first introduced to solve Euler’s Gimbal Lock problem if I’m not mistaken, so I’d stick to Quats for all internal calculations. I think best thing about Animato will be that if it accomplishes the “everything is animatable” goal we could soon enjoy animatable armature options like being able to turn hinge option on/off etc.
And python access to everything !
January 19th, 2009 at 1:55 pm
Yes, “everything” animateable” and python scripting will be great boost for rigging and animation.
By the way as you have mentioned the example of hinge switching I have presented quite acceptable solution already possible in the Blender in this thread:
http://blenderartists.org/forum/showthread.php?t=144845
April 10th, 2009 at 7:34 am
[...] I was originally using the FK character, but came across trouble as I was trying to rotate the elbow. The movement as the skateboarder shifts and transfers his weight between almost standing, to push and finally jump, is quite fluid and effects each joint independently. So I returned to the beginning with the IK character instead. [...]
December 5th, 2009 at 12:11 pm
Very good!