FABRIK: Offsetting location and general confusion

So I’m trying to implement an ik system for hands reaching out and touching things in the world, and I’m close but having a little trouble getting things to line up perfectly.

First question:

What is an effector? It seems to be the target of the ik chain, but target is used to mean something totally different in the documentation. I’m just a little confused on what all the potential variables actually are.

Second question:

I am trying to offset my ik by the relative location of a child bone. To give an example, my hand joint is at roughly wrist location, but the bone I want to line up with the target location is in the center of the hand. Is there a good way to apply the offset between the center hand joint and the hand joint, but only have the ik affect the hand<->elbow<->shoulder chain? The problem I have with using the center of the hand joint as the end of the ik chain is that it can cause the hand joint to rotate differently than the animation I am blending with, which causes things to no longer line up.

If there’s a way to get the offset between two bones I can just apply it to the effector location transform before passing that into the ik, but I can’t find that so I’m wondering if there’s a way to do some sort of ik chain where the end joint moves to the target, but the ik doesn’t start until a different bone.

Any other solutions for that problem are totally worthwhile too, this is just what I was brainstorming with for now.

Any help would be great because ik is kind of tricky in general. Thanks much all :slight_smile:

edit: For the time being I just made a utility function in C++ that gets the bone position offset since there’s no really easy way to access the GetBoneXXX functions on SkinnedMeshComponent from blueprints, but it seems like I’m missing something more useful that should already exist somewhere accessible by the animgraph already.