Skinned Animation

Hands-On C++ Game Animation Programming

In this blog we will take a high level look at some of the content covered in chapters 8, 9 and 10 of the book. The book provides more in depth coverage of these topics, as well as advanced topics like Inverse Kinematics, Dual Quaternion Skinning and Crowd Rendering.

While this post does not follow the book, it's worth looking at the code for Chapter 10, Sample 02, which contains a similar skinned character implementation.

This blog post mirrors the contents of the landing page for my new book, Hands-On C++ Game Animation Programming.

Generally, game animation can be broken up into three distinct steps. These stages are: pose generation, pose modification and skinning. The stages are usually performed in order.

Pose Generation

When talking about humanoid animations, a pose refers to the skeleton. Specifically the skeleton posed to match a frame of animation. You would generate a pose by sampling an animation clip.

Pose Modification

Pose modification is exactly what it sounds like, modifying the pose before it is skinned. Blending two animation clips to hide a transition would be considered pose modification, so would an IK system that adjusts a leg to keep in on top of terrain. This site will cover animation blending, the book covers blending in more detail. The book also covers more advanced topics like IK.

Skinning

Given a mesh and a pose, skinning is the process of deforming the mesh so that is matches the given pose. The two most common skinning methods are matrix palette skinning and dual quaternion skinning. We will cover matrix palette skinning on this page, both are covered in the book.

Math

All of the math required to build an animation system is covered in the book. To follow along with this blog you should have be familiar with Vectors, Matrices, Quaternions and Transform hierarchies which are all covered in my other blog posts.