Inverse kinematics – part three

Project Page Next project post Post History

Slow progress of late on the inverse kinematic system I'm making for my ProxyMan tool. Mainly because other things have come about. But I've manged to make some small progress nonetheless.

I've been able to figure out where the joints in the chain should sit when a pole vector is used. The hero image of this post (also shown below) shows a viewport capture of where I'm at thus far. It'll be a bit difficult to see what's going on, as I've added a bunch of line drawings to help visualise where my calculations are getting me.

The current IK chain solve in action.

The whole thing might look a little messy, but all those lines are telling me something. The IK chain is bent, just not the way we want. I still need to work on some rotational stuff, that'll be the last thing to work out. What's happened since last post is there's now an orange dot in the draw (seen in lower half of image, next to the biggest yellow circle), which now shows me where the 'elbow' of this chain needs to sit for the solve to be correct.

I'll just quickly mentioned, the term 'elbow' is being used loosely here as the name of the joint in the chain that needs to bend towards the triangle pole. It could however, be called anything.

The orange dot I mentioned - that's the target position the elbow needs to be at in order for the IK to have correctly solved. The image comparison below shows another view of the this, with the arrows from the 'elbow' to where it needs to be.

It may be a bit difficult to understand for those who don't really know what's going on here, but I'll try explain. You may be able to see an orange line triangle. The lines are between the white ball, the black triangle, and a hexagon shaped object in-between. This triangle represents a flat 'plane'. And on this plane, sits an orange dot. We want the IK chain to bend, so that it bends over this flat plane, and so that the elbow joint in the middle of the chain sits where the orange dot it.

Here's a couple more viewport captures, looking down on the IK chain.

The IK chain should solve for the root, the joint with a line to our orange marker, and the target white ball. The joints in between are roll joints, and should not bend in the IK solve.
IK chain made up of joints numbered {1,2,3}, with rolls joints in-between

One thing to note in these images are the 'roll' joints that are making the chain look like a snake! I'll cover roll joints in another post soon hopefully. Just know that I need to find a solution that ignores them (I believe I may have a solution that accounts for this).

Still don't understand? That's OK, not all of us grasp things in 3D! I'm trying to figure this out too! And maybe I'm not explaining it very well, or the pictures don't show it properly. But what it shows me, is that I've got all the ingredients there to make the IK solver work. I just need to move the chain joints by the angle to get them onto the pole plane (part four should cover this), and then figure out the local rotations. Once these are set, I think we're there.

Part four awaits...