Maya native ik/fk blend

by Orkah posted 40 days ago | 7 comments

So I find myself rigging a T-Rex for a project and it was suggested to me to use maya's native ik/fk blend solution, because "it is used in lots of productions.". The workflow is quite simple since maya provides the tools for "ikFk snap" and the blend is already implemented in the ikHandle. I just have to tell animator how it works or give them the workflow. For me it s a rather nice solution because I am not that friendly with maya API for now and snapping automaticaly ik->fk and vice versa while maintaining a certain performance level is not something I am able to do with my knowledge of scripting. But here is my problem, I cannot get it to work for a spline Ik. So I would like to know if this is used in production rigs or are callbacks and customScripts the way to go? Have any of you found how the native blend works in conjuntion with ikSpline? (does it work?)

thanks for your time

by vshotarov posted 40 days ago

Interesting. Can you share a bit more info or a link about maya's native ik/fk blend and doing a snap with that? I remember there was IK blend attribute, but I don't think I've ever seen anything about snapping.

As for spline IK blending, I don't think I've ever been asked to do that or have done it. Again, I am not familiar with the native IK blend attribute, but I think the approach of having two chains rigged differently (one IK and the other in FK) and then blending their transform values through blendColors and animBlendNodeAdditiveRotation nodes, would work for spline IK setups. That's what I've always used for Ik/Fk blending chains. In theory you might even not need to blend anything else but the rotation, depending on whether you are stretching the chain and if you are, whether you are using scale or translate to do it.

In one of the Cult of Rig videos (unfortunately I don't remember which one exactly), Raffaele goes over how blending between IK and FK is done for a single joint and explains why we should use an animBlendNodeAdditiveRotation instead of a blendColorsfor rotations.

by denilson020898 posted 40 days ago

Using blendcolors is a terrible Idea. they are indeed rendering nodes. They take value linearly.

rotation is a different unit, that's why maya creates unitConversion to convert it to angle /radiant.

with animBlendNodeAdditiveRotation, we can hook up the rotation directly.

try pairBlend node, it takes both distance and angle data type

at least it is the advantage for me.

by clareswift posted 34 days ago

Hi, Have been using blendColors but can see from this thread that its not appropriate. So, do i plug FK/IK rot values into a pairBlend via a animBlendNodeAdditiveRotation and plug the fk/ik trans directly into the pairBlend node - is that the set-up

Thanks in advance

by vshotarov posted 39 days ago

That's a great tip! I've always used the blendColors for the linear blending transforms (t and s), but blending both translation and rotation in just one node, as the pairBlend does, sounds really cool! One node less in the graph!

by Orkah posted 39 days ago

So in all ikHandles there is this blend attribute that you can use to switch between ik and fk. And in the animation menu under key (Animation>Key>IK/Fk Keys) you can find some more commands to use this. The workflow is really similar to normal 3chain switch but there is this "MoveIKtoFK" mel command button that unables us to just snap the ikHandle to where we moved the fk bones. To move fk bones you have to enable the "Ik Fk Control" attribute found in "ikSolverAttributes" section of the handle.

Here is the AutoDesk page for the buttons to use native ikBlend : (

So the workflow as I explored it goes like this: 1: enable "Ik Fk Control" 2: press "Set Ik Fk key" while selecting the handle or the driven bones (this wil put a key on every keyable attribute and all driven bonesn maya throws in som other operations to ensure a good blend) 3: animate with either fk or ik. 4: if you animated with fk and want to switch to ik and maintain same position you just have to use "Ik Fk Key" over two frames and use "move Ik To Fk" on the second. And just switch.

So I really didn t use it yet but it seems that it exists since maya2016. And I wondered if it was used or known by animators. I am the same as you, I ve only used the 3chain set up with colorBlend/contraints/pairblend/animBlend/etc... And it appears that this knew workflow is quite simple as you don t need 3Chains and custom scripts to switch/snap. It only takes one chain and an ikHandle with maya s built in commands to do all that. I think it could take a lot of time off of riggers to not have to write custom scripts to snap or set up the blends for ik/fk (as we know every animator likes the snap)

I ve also been watching Cult of Rig and hope it continues. I ve learned a lot from Raffael. And yes I look out for unitConversion nodes, I try to have as little of them in my rigs as possible.

So as I see it the native snap doesn t work for ikSpline because we drive the handle via a curve and the curve via cluster/skin/etc... I would guess that is why it didn t work for me. If you guys can make it work please tell me how.

by vshotarov posted 39 days ago

Nice! Thanks for that explanation. I had no idea that snap existed. It does seem to be quite limited, though. It relies heavily on existing keyframes it seems, which might not be ideal and also I am not sure how this would work with controls on top of it.

As for the spline snap, I honestly don't have a clue where I would start with trying to snap fk to a spline Ik. I might be underestimating Autodesk, but I seriously doubt that they would have this built into the ikHandle. Other than that, if you are keen on exploring how to do this, an idea might be to try the fitBspline command or node to get a curve that goes through all of your fk joints. I doubt that it would be a perfect snap, though.

by Orkah posted 39 days ago

Actualy for controls, in the "ik fk keys" UI there is a "Connect to IK/Fk" button that makes the ikHandle controler snap instead of ikHandle itself. As I recall it connect the ikHandle and the controler via a "message" attribute.

I didn t know about the fitBspline command. I ll test it out when I can, to see if I can make something work with it. thanks