FK/IK with blend colors node not working

by Raluca posted 967 days ago | 6 comments

Hello, everyone!

I have an IK and a FK chain that I wanted to blend into the result one with a blend colors node. I saw this method was preferred over constraints due to its speed. I had FK rotation as my first input and IK rotation as my second and then the output would go in the result chain rotate. Every time I would set a connection between the nodes, I could see my joints slightly shifting position which caused them to not be aligned anymore and at the end, nothing would work, the rotation of the result chain wouldn't cause any movement.

I had cleared my joints history beforehand and froze their transformations. When I would try to do the same for translation, at the end the rig would be broken in all three chains at 45 degrees from each other, stretched on the ground plane.

Does anyone know what I could have done to prevent this or what went wrong? Thank you!

by denilson020898 posted 966 days ago

You might need to put those joint chains in the same space, you can simply group them under a transform node.

What you are actually doing is blending the translate and rotate value. If you want them to sit in the different space. You can use constraints because it will blend the space based on worldSpace position.

Or you can decompose the world matrix and then blend them.

The other reason that you IK chain has a tiny values is because the algorithm of IK is trying to match the joint transformation until it reaches a tolerance value. Meaning it's not gonna be perfect matching at every moment. If I am not mistaken, you can change this value in ikSolver node, access it through outliner by disable DAG obj only.

Hope it might help. :D

by Raluca posted 960 days ago

Thank you for your reply!

I have tried grouping them under a transform node, but the joints kept moving on their own after I set up connections as before.

Unfortunately I am still fairly new to using nodes and I have not completely understood what I could do with the decompose matrix.

Also, I'm afraid I did not understand what you meant by the IK chain having tiny values.

I think I solved my issue with the pairblend node as someone suggested below, but I would be grateful if you could go in a bit more detail about your solutions.

by nazmiprinter posted 966 days ago

First, try using pairBlend node instead of blendColors. Connect FK Translate and Rotate to pairBlend's inRotate1 Translate and inRotate1 Rotate, use inRotate2 Translate and Rotate for IK. When the weight is set to 1, it'll be driven by IK.

Here is an example:

Make sure your 3 joint chains are sitting at the exact position. That might be the problem but of course i'm not certain. If you have time, rebuild your first chain with the orientation you want, then duplicate twice, rename and then without touching anything go for the blend setup.

by Raluca posted 960 days ago

As I have just tried the pairBlend I'm almost 100% sure it is working. Thank you!

I have tried building everything clean as you suggested one more time for the blendColors, but still no success, the joints still keep moving every time I establish a new connection.

by JaschaW posted 965 days ago

Is there an added benefit to using the pairBlend node? I see that it has a few extra parameters and it is geared towards translations and rotations whereas the colorblend is "meant" for rendering and texturing.

by nazmiprinter posted 965 days ago

With blendColors you have to use one for translate and one another for rotation, with pairBlend you can do both with one node(as the name states). Plus when you connect your rotation to blendColors node, it'll create a unitConversion node, you don't have that with pairBlend. All in all, less nodes. These are the advantages i know of and it's pretty convenient to switch over from blendColors.