CSC 471 Final Project

Skeletal Animation: By Greg Hoffman

Intro

The concept behind this project was to come up with a usable skeletal animation system for use in a program I had been working on off and on for a long period of time. The specific type of skeletal animation that I implemented was called smooth skinning.

Model Construction

Originally I started out on this project constructing an original model that I was gong to use to demonstrate the skeletal animation. The model shown below was the final result. The model was constructed in maya and then exported using an exporter I wrote to be used for the demo. Alas, maya threw me a curve ball and I couldn't get the bones in the coordinates system I needed. As a result I had ot use a much simplier object for my demonstration.


Original Model I was going to use for the demonstration.

The New model was assembled by hand. As shown below by the blue dots (bone positions) and the blue lines (connections between bones), the bones were situated in the interior of the model with each bone having some influence over certain vertices. Seeing as how I implemented a smooth skinning version of skeletal animation, multiple bones could influence the same vertex.


Original Basic Model used in the demo.

The animation would take place by starting at the root node and transforming the positions of the vertices based on the transformation matrix generated from the previous bone transformations. These new vertex positions were then weighted based on the bones influence on a specific vertex and summed together with the weights created by the other bones. In the last stage the object is then drawn. Below you can see a picture of the object during one of the more extreme parts of the bone rotation. Both the root bone and the following child are rotated in this picture.


The distortion on the geomtry due to a rotation in the 1st and 2nd bones.

Once I took this method I applied it to the AI work I had previously done, assigning this new "model" as the apearence of the AI agents. Below you can see two screenshots of them performing different behaviors as they move around with the correct distortion due to the bone animations.


The newly created agents wandering around their environment.


The final program look.

Resources

www.wxwidgets.org - the gui library I used

http://nehe.gamedev.net/ - for misc opengl tutorials