FBIK in referenced files

I thought I’ll make a little post about the fix that happened in I Love You production, because it made animator’s life so much easier.
So, what’s the catch? Full Body IK is great, but it has its own little quirks that you either need to get used to, or try to fix them or get rid of them somehow. One of the things that felt really weird was the fact that after you set the keys on the effectors, and move the time slider a bit, the effectors would go out of place, although this wouldn’t affect animation, nor skeleton pose for that matter – it’s just that you would think the rig got messed up, when all you had to do is move one of the effector a tiny bit, and the out-of-place effectors would snap back to where they are supposed to be. This is normal FBIK behavior, as confirmed in Maya help documents. I would say that the FBIK solver doesn’t try to solve for the inbetween frames unless you play animation or move the effector, in which case it will solve and give the proper feedback – e.g. the effectors would be where they should.

Another issue we had was a more troubling one. Mainly, there is a neat key combination for Key All FBIK, and it is by default ctrl+f. This would work perfectly with FBIK, unless the file containing it is referenced into another file. In that case, the error will appear, and no keys would be set. The error goes something like this:

// Error: The attribute 'sampleFBIK:SpineEff.translateX' was locked in a referenced file, and cannot be unlocked. //

Unfortunately, the script stops there at the first error, and does nothing. I tried unlocking the spine effector translation values in original file, saving the file, referencing it, and always got the same error, even when I did it with the example rig that comes with Maya – that is to say, there was nothing wrong with my rig per se, the same behavior is present with Maya’s rig as well. And, before going to forums or mailing list and asking people about this problem, I did some search, and thankfully, in HighEnd3D Maya mailing list I found out that one person had the exact same problem with locked Spine effector in referenced (but not the original) file, after trying to key all FBIK effectors. And the question was answered!

The Solution:
There is a MEL script file that is locking the spine and hips effector translate channels when the Key All FBIK command is called. These three effectors are, of course, intentionally being locked by the script, because they are not supposed to be translated, only rotated. The script file in question is called loadFullBodyIKFunctions.mel and it contains the procedure setEffectorLockedState(). All I had to do was to comment out both calls for this procedure. This fixes the issue of spine effector being locked, and the Key All FBIK command now works smoothly in referenced file as well! Joice even said that body parts aren’t snapping around anymore, and thus I hope I will have more stuff to show related to Mary and Howard, now that we had contours and FBIK issues mostly out of the way.


Leave a Reply

Your email address will not be published. Required fields are marked *