Real-Time Procedural Character Animation Using Inverse Kinematics
This project was done as a part of my honours-stage research paper. The overall idea was born from realizing how little flexibility animation in real-time currently has; while animation blending, ragdoll physics, and simple IK re-targeting techniques are commonplace, virtually little else in the way of full-character motion generation existed. The benefits such a notion were enormous both from a game-design and real-time perspective. So I decided to investigate current procedural animation techniques, and developed a procedural animation system of my own, which I later named IKAS (Inverse Kinematic Animation System).
I developed an IK algorithm based on the Jacobian transpose method to animate a human walk cycle in real-time. IKAS allowed for many end-effector target placements that formed motion paths. These paths are iteratively computed towards until a desired motion is described. Multiple paths are then joined to form overall animations, where specific target frames could be referenced and continuously checked for added functionality. Any of the motions that are described could be modified via control parameters and IKAS would compute them in real-time.
The thing I appreciated the most from this project was realizing the potential avenues of improvement this field has yet to look into. The paralleling of Jacobian-based solvers is quite an active area of development commonly found in robotics, much of the mathematical principles involved can be found in work by Henrich, Karl and Worn (1997). However virtually no quantifiable results exists from testing such methods for skeletal or complex articulated figures in computer graphics. Not to mention the exploration of GPU solutions is also generally unknown. Calculating transformations through OpenCL, CUDA or Microsoft’s DirectCompute shader in DirectX 11 could result in large performance gains, and pose as very achievable solutions to motion slowness. I’d like to at some point through either further education or just in my own time look into these developments, and after deevloping IKAS it should be easier to experiment with these concepts at a later stage.
While I’ve provided a brief summary of the research in this post, results from the research and further detail can be found in the full paper, which can be found here.