Rudimentary Solution to Third Person IK

Put simply, I have recently figured out a way to solve the issue of third-person inverse kinematics not really working. There were no solutions from what I saw at the time, so I decided to try it out for myself. The basic idea that I went on was to have no visual component for the actual player, and instead have a separate actor for the animations and such. This actor would be transformed up and down in order to connect the feet to the ground, and has its own collision capsule for everything except movement (hit by projectiles, etc). There are still some minor issues with it, so any contributions you could make would be greatly appreciated.

Foot Rotation:

A list of issues I am aware of:
-No IK while running
-Sometimes the IK ‘pops’ while settling, though only at certain heights
-Character will float off into the sky when one foot is on a rotated platform and the other isn’t on the ground. See asdfgfdgsd’s post for details.

I have added a download with fixes to my previous issues. I have not found any new problems yet, but I will fix them as necessary. The engine version is now also up to date. I will probably do one more download with the two actors being combined.

EDIT #2:
I have added a third download where only one actor is used instead of two.

EDIT #3:
Added a fourth download that includes foot rotation.

Question: why not just move the mesh component up/down instead of using two actors?

There is no reason, I just wanted to make sure that it would work when I tested it out. Looking back, I might as well have done it that way in the first place since there is ultimately no difference.

@MoltenThorpe - This is an example of moving the mesh in the single actor (not my post). Personally I favor that, but nice solution anyhow :slight_smile:

IK / FABRIK blueprint tutorial for proper foot placement with capsule collision - Animation - Unreal Engine Forums

I think I like this better than what I have, since it’s so much more precise, and I’m actually surprised that I didn’t find this before. Thanks for the link :slight_smile:

Works pretty well. Best solution I have seen so far and it was free! IKinema ended up being too much of a hassle.

Hi Molten,

Did you ever get the feet to orientate parallel to the surface (e.g. slope) they are standing on?

I tried the solution at the link that n00854180t posted but couldn’t get it fully working.


up up

use Combined: in 4.92 not have any change

this have a question

jump to this edge then heh

are those extra IK bones in the rig needed for this effect? or if i had a rig that just had nroaml leg bones with out those extra IK bones could you still set up these nodes to work with them?

Wow, I had almost forgotten about this thread. There’s more solutions floating around now, so it might be worth taking a look at those first, but I thought I would at least get around to replying to the people who had posted in this thread.

I whipped up a solution in about 15 minutes and it seems to work pretty well. Link was added to the OP.

That’s incredibly bizarre, I have no idea what’s causing it since I haven’t touched the project in so long, but I tried it out for myself and had a great laugh. I’ll add it to the issue list even though I’ll probably never get around to fixing it.

You do not need any extra IK bones, just change the RightFootSocket and LeftFootSocket strings on the character blueprint to whichever bones it is that you would like to use.

What version of UE4 was your Foot Rotation project created in? I’m trying to open it in 4.9.2 and it crashes on startup. Your other projects open fine though.

Hi there,
first of all, thank you for sharing this awesome aproach to the “so problematic” IK solutions around the web. Even this post is kinda old, it’s the best solution out there.

So I’ve been trying to make it even better and I’ve managed to solve the problem when one foot doesn’t reach the floor and the character floats up to the sky.

The fix:
Inside the function “SetDropHeight” in “MyCharacter” BP, when the last branch condition returns “false” and sets the Dropheight value, you need to clamp that float to a minimum of 0. To make sure that your character can go up to any certain point in your level, you should set the max value to the highest point where your character can reach. For testing purposes I’ve setted to Min = 0 and Max = 600 and it works fine.

Quick edit for my previous post:

It’s easier and works better converting the float to an absolute instead of using clamp.