Hi, I’m still relatively new to Unity and these forums, so allow me to introduce myself.
My name is Rune, and I am studying Multimedia with specialization in Game Programming at the University of Aarhus in Denmark. I have just begun working on my Master Thesis, which I will be making in collaboration with Unity Technologies.
The Master thesis will be about “Adaptive Animation for Character Locomotion”, which basically means creating a system for adapting walking, running, and crawling keyframed animations to a dynamic environment. The system will take curved paths, uneven terrain, and variable speed into account all the while ensuring graceful footsteps without slipping feet and motions that stay as faithful as possible to the original keyframed animations under the given restraints. Inverse kinematics is one of many techniques that will be involved in this.
The system is meant to be generic in nature, working not just for biped characters (with two legs) but also for example for dogs, bugs, and spiders and, say, robots and aliens, provided that they move around using a limited number of legs. This list of features is the ideal case - time will tell how far I get within the timeframe of my Master Thesis. Hopefully I can continue working on the project after my graduation, if necessary.
In the end, the result of my work will be made available to all users of Unity free of charge, for any use. If anyone are interested, I’d love to get people in this community involved in testing the system as it is developed, since one important success criteria is the usefulness and usability as perceived by the developers using the system. It will take some time before the first prototype is ready though, as I’ve only just begun.
In order to quickly get my feet wet, I’ve made this little demo, where I have modified the Goober guy that comes with one of the Unity tutorials, and made his legs use some very simple inverse kinematics:
http://runevision.com/multimedia/unity/ik/Goober%20IK.html
Note that in this simple demo I simply adjusted the altitudes of the feet, so feet slippage etc. are not prevented. The actual system will work in a completely different way.
I also have a question: The simple inverse kinematics I used here uses an analytical method that only works for limbs with three joints (hip - knee - ankle). For limbs with more joints this approach cannot be used, and an iterative solver of some kind have to be used. CCD and Jacobian Matrices are some examples. Have anybody implemented such IK solvers, and would be willing to share the code?
The actual inverse kinematics implementation is not a focus of my master thesis and not really one of my strengths, so I’d be happy to use an existing implementation if one exist. This would be fully credited in my master thesis of course.
Lastly, if anyone are curious about any of the prior work I have done, there are various game projects, 3D graphics and other things on my website at
http://runevision.com
Of interest might be the game Flipside, which was nominated for the Best Student Game award in the Independent Games Festival at GDC this month (though it didn’t win).
I’ve already seen how incredible helpful and resourceful this community is, so I’m looking forward to working on my Unity project over the next several months!
Rune