Book Image

Hands-On C++ Game Animation Programming

By : Gabor Szauer
Book Image

Hands-On C++ Game Animation Programming

By: Gabor Szauer

Overview of this book

Animation is one of the most important parts of any game. Modern animation systems work directly with track-driven animation and provide support for advanced techniques such as inverse kinematics (IK), blend trees, and dual quaternion skinning. This book will walk you through everything you need to get an optimized, production-ready animation system up and running, and contains all the code required to build the animation system. You’ll start by learning the basic principles, and then delve into the core topics of animation programming by building a curve-based skinned animation system. You’ll implement different skinning techniques and explore advanced animation topics such as IK, animation blending, dual quaternion skinning, and crowd rendering. The animation system you will build following this book can be easily integrated into your next game development project. The book is intended to be read from start to finish, although each chapter is self-contained and can be read independently as well. By the end of this book, you’ll have implemented a modern animation system and got to grips with optimization concepts and advanced animation techniques.
Table of Contents (17 chapters)

Working with textures

All the shaders you will write in this book assume that the diffused color of what is being rendered comes from a texture. Textures will be loaded from .png files. All image loading will be done through stb_image.

Stb is a collection of single-file public domain libraries. We're only going to use the image loader; you can find the entire stb collection on GitHub at https://github.com/nothings/stb.

Adding stb_image

You will be loading textures using stb_image. You can get a copy of the header file from https://github.com/nothings/stb/blob/master/stb_image.h. Add the stb_image.h header file to the project.

Create a new file, stb_image.cpp. This file just needs to declare the stb_image implementation macro and include the header file. It should look like this:

#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"

The Texture class declaration

Create a new file, Texture.h. You will be declaring the Texture class in this file...