The last month has been pretty thought provoking. I haven't gone on some worldly trip or made a fortune. But I have served on a jury, and have made the decision to commit to purchasing some optical motion camera systems. I've also managed to solve my rotational parts of my first inverse kinematics system.
The jury stuff was interesting, I'll post more on that another time. It did however, present some working issues for me. Serving on a jury takes time, energy and headspace. Especially when you're dealing with a pretty rough case involving minors (several). So I haven't put much time into tool development. But I'm pleased to say, I've finally found the answers to my rotational parts of my IK system.
It took me sometime to figure out the correct order for doing things. The trouble I have is that the SDK I'm using has absolutely no examples of really working with objects and creating systems like this. I know there's plenty of stuff about the internet for how IK systems work etc. But none of them are shown in the programming style of the SDK I use. Which makes it a bit tricky converting things over at times. It's also in a handedness that's different to the usual suspects.
The image below shows one of the issues I was facing. You can see the main chain joints are rotated, but some of the children joints are not in the correct locations. See the comparison images below:


It shows this strange kink in the chain when the pole object is moved off the flat starting plane. And thus my thinking was that it had something to do with the pole position. The rotations are based off where the pole is, but they weren't accounting for how the pole moved from it's starting place.
After much fiddling about, and figuring out some math trickery, I managed to get something that resembled the difference between the starting pole and current pole locations for each individual chain limb. It seems to have solved the problem.
The comparison screen shots below show the full complete working IK algorithm:


Nailed it!
I feel quite relieved at this point. It's given me some hope that the projects I want to make can finally start to happen. And I managed to do this by keeping all the roll joints intact as well. I'm going to do something with the roll joints another time, so I won't cover them here. Suffice to say, I have a cool little engine that I can built upon.
Now I need to look at how to incorporate this into my ProxyMan tool, so that I can use it alongside motion capture animation. There's also a couple of other minor things for me to add, such as functionality to control the rotation of the chain's end object. I won't explain what that means here, other than to say it's like keeping your hand flat on a table top while the rest of your arm moves around. My system doesn't handle keeping the hand flat on the table top yet, simply because I haven't added in that control.
But all this is to say, coupled with the motion capture system I hope to acquire next month, I should soon be able to animate my own characters with a motion capture and IK character animation system I built myself. Which is pretty neat.
It's been a lot of work just to get to where things are now. And after all these years of plugging away at things in the background, it's now starting to happen. I think there's a lot I'm going to be able to do with this.
Things finally feel like they're looking good for a change.
