In this thesis, I propose and analyze methods for real-time, ingame character animation based on a user’s input. My decision to work with animation was made purely out of love for gaming. Since making a modern video game is a very complex, elaborate task, I had to find a segment of it to explore and work on. I have always been interested in making things move on the monitor, so I chose to work with character animation.
In the first part I describe basic challenges regarding game development and moving objects in the virtual world. The first section is a brief introduction to game development and character animation. The following, second chapter is about animation in general, which includes description of ways to move characters and lifeless objects in the virtual space, and pointing out the difference between online and offline animations. The main emphasis in this part is on real-time animation and creating models that can be moved in a game scenario based on their skeleton. The third section is about the development platform, the XNA Framework. I describe the platform’s characteristics, the way a program on this platform looks like, and the basic structure of it.
In the second part of my thesis, I unfold my project in the reflection of the previous chapters. There are two basic approaches to computing movements: forward and inverse kinematics. In the fourth chapter I evaluate both methods, explaining the down- and upsides of using those methods. I describe the Jacobian computation of inverse kinematics and propose my own method of implementing a system that can deliver near-Jacobian accuracy with much less computation.
The fifth chapter is about the process of the implementation, where I introduce my system in a step-by-step manner. I present the basic parts the system consist of, and explain the design choices that I have made as a developer. As I describe this in my thesis, my goal was making the system react to any user input as fast as possible, regardless of the current state of the animation and the requested action. My system has to compute key frames for the model from transformations based on user input, and interpolate between those key frames at specified intervals without any delays to create continuous movement.
The sixth and final chapter is a summary and a reflection upon my work, describing possible ways to enhance the system and carry on the project.