Saturday, June 11, 2011

Getting more interesting

As all so often there's a lot of things on my todo and i can't manage to focus on getting one thing done before starting the next, thus i am jumping around a lot of different construction sites.

So what i'm going to show you today is something i worked on a few weeks ago.
Behold inverse kinematics walking animation:

There are still a bunch of issues, like the elbows being all over the place, and the legs crossing at some points when turning around, but it works fairly stable

This prototype is pretty simple in itself as it only works on a flat surface yet. Eventually the model should be able to climb stairs and slopes similar to how a person would to it.

So why am i doing this?
Obviously because it's pretty darn cool. The other point is having realistic animations which are adjusting to the environment, without the need to have the animator design a bunch of animations for specific cases.
Another reason is the immersive aspect (as much as this word is misused nowadays, i think it fits at this point): Nothing tips me more off in game as terrible animations, starting at simple things like syncronising the movespeed with the walking animation cycle, or a simple waving the hand to interact with objects, instead of grabbing the doorknob to open the door for instance. It just looks like a poor puppetplay.

I realize that in the past it was not easily possible to implement it any differently due to performance restrictions and some other barriers. But we arrived at a time where graphics will only improve slightly, so to increase the realism(for lack of a better word) in games we need to focus on things other than the polygon count. Many studios realized that already and came up with a bunch of nifty features, such as Assassins Creed's climbing and user interaction animations, or LA Noire's captured facial and body animation.

This is currently a work in progress proof of concept. This attempt holds a lot of mathematical barriers to me, implementing restrictions for joints, finding the correct pathes to move for the limbs, reacting to outside forces and a bunch of more stuff. So i take this as an iterative process. I will improve it step by step to get a good approximation of what i have in mind eventually.