IK / FABRIK blueprint tutorial for proper foot placement with capsule collision

That’s very interesting, I want to try it. I need to make a character rotate the torso and shoulder a little bit when reaching for an object with a hand. Right now when I try to FABRIK from spine to hand it produces very ugly pose.

Well, I might have to do that then. Luckily the paper gives a fairly good insight into implementing joint limits. I will post once I have a running version of the FABRIK node including joint limits.

An update to the FABRIK joint limits:

I found the dev who contributed the FABRIK implementation on reddit and contacted him. He
confirmed that there are no joint limits implemented for the FABRIK node, even though the
theoretical algorithm describes a way of doing so.

Consequently, anyone using the FABRIK node will have to implement joint limits or constraints
him/herself. The paper on this algorithm can be found here:

@juggle, I’m interested in having constraints for the FABRIK node as well - add me (same name as on here) on the UE4 launcher or Steam and I’ll try to help if you’re stuck.

It looks like page 250 of the FABRIK paper describes how to do the constraints properly for this particular IK scheme - pretty interesting actually, moving the target within the constrained area rather than limiting the joints themselves. I like that more anyway, it should be far more stable :slight_smile:

Hey guys, I just found this thread and started to try building an foot placement IK setup the other day, I’ve worked through this tutorial but I’m getting odd results. Just wondering if anyone would know what would cause the legs to be pulled towards the center point between the two feet and the knees to bend backwards?

Cheers

Seems feet XY are at 0

@juggle, Any progress on FABRIK improvements?

Thanks to for the idea, here is the sample content. It’s old, i wasn’t good makin blueprints, so i don’t remember why i’ve changed the skeleton, but just to have a working example may help some of you.

Make sure to have a clean TP project

Good luck

Laughed way more then I should. Hilarious :D:D

ANtlord, already done it)

Yeah, same issue here. Did you find a solution?

Hi guys, In the meantime that ANtlord
will update his plugin, i’m doing some tests with blueprints only. What do you think?

There are still some little errors, but overall work. Capsule is that default one. Two-ik-bones are in bone and parent bone space.

Ey thats looks great!! I am unable to use on my own model, as both feet are glued :S

Hi Kheka - any chance you could upload an example project? I’m trying to get this to work again and the C++ plugin isn’t doing it (I tried debugging it but no luck yet).

I’m planning to realease it. It will be a single blueprint component (Plus two-ik-nodes in anim blueprint). It is a different system that you can see on forum or anywhere. Currently i have one main issue.


This is a “normal” behaviour because of linetrace. Any suggestion?

I think a box trace will solve this issue.

Already done without success. The line trace are messed up because of leg/foot move.

@Kheka - you might try setting it up so that it doesn’t continuously try to find a new IK position for the foot if it’s found one and there hasn’t been any movement.

I.e., set up a variable for tracking the current IK-solution-found-state, a bool works. Default to false/not found, and then when you find a good hit like that one, set it to true. Branch before the trace and only trace again if there’s no current IK solution found.

Then set it up so that in the player input events - turn and WASD mainly, you set your bool to false.

This would break it for running/walking, but you can set it up with AnimNotifies so that it knows when to line trace while moving (though that get more complex).

TBH it’s kind of hard to work out a solution without just trying things, for me at least.

can any1 upload sample bP?

I’ve made this far using just 2-bone IK nodes, I did try FABRIK but left/right leg bones being mirrored on axis is stressing my brain with conversion on rotations.

My question is, what would be the most reasonable way to determine mesh height offset? line trace can get quite picky at times
My initial idea was to pick furthest socket from capsule centre, thus making sure 1 leg is always extended without any pre-set values
(keeping in mind I bind stuff to actor up vector, not z+)