Inverse Kinematics Upper Body

I’m currently working on a full body IK system, and thought I’d share some videos and results as I progress.

Here is a video of my progress so far:

(the video capture makes it look more jerky than it really is)

In this demo, I’m using the keyboard to move the sphere around and then the IK solver will try to move the characters left hand so that its touching the sphere.

I’m still at a early stage and so far only have the upper body working and don’t have all the joint constraints implemented.

Cool. I’ve wondered how this would work before, for an idea I had for a game where a hand would place items on the game board.

Nice, looks natural

any news on this?

I am working on a project that requires these kind of restrictions. I am currently working with character joints, and some dummy rigidbodies parented on the gameobjects, looks and works fine, but it needs alot of tuning…

EDIT:
but if you place 2 char joints on a single obj, it will start to jiggle and ruin everything… and the rigidbodies must not move too fast :expressionless:

MWr, great work, this is something I’ve been interested for a long time.

If you don’t mind me digging at your brain a bit… I was working on this same exact thing for a long time. I was trying to replicate Autodesk HumanIK functionality. I got my 2 bone solver down. I got it so that you pull the hand and the shoulder and upper body would follow. But I did that through some very funky methods. Basically I made the shoulder aim at a dummy cube via LookAt, then I made the dummy cube drag behind the hand IK target by evaluating a curve. This was the direction I was going with it, but then I started to contemplate getting the entire skeleton working via that method and basically my brain exploded and I abandoned it. I concluded that to do such a thing properly I HAD to know quaternion math to do it effectively, as this aiming of joints at ‘dummy cubes’ and then dragging the dummy cubes via relation to other dummy cubes was just silly. So then I signed up at college to take all the 3D calculus classes.

So with said, I would be really grateful to know exactly what method are you using to do this internally? Are you doing this all algorithmically through quaternion math? Or is it all algorithmically through eulerAngles? Or are you doing something else? Or are you doing something funky like I was originally trying to do with LookAt, dummyCubes and AnimatioCurve.evaluate?

Any news on this?