This animation system was created for an assignment in the 4th year of University. It was created using C++, SFML, rapidjson and bullet. It was built and is able to load the sprite and animation data of two-dimensional sprite sheet animation, skeletal sprite animation, three-dimensional mesh animation making use of blend trees which then is able to play an accurate ragdoll animation based of its current animation frame. Then play them back at the correct duration and frame rate. Each type of animation was implemented in accordance with a Skeletal Hierarchical structure, animating each part of skeleton mesh or sprite based on its own transform and the transform of it parents.
The application was developed in accordance with Object Orientated architecture emphasising encapsulation and reusability. In accordance with the aim of the development to create a system that is modular in its usage and reusable.
The above diagram details the structure of the system.
In this system all animations make use of a skeletal hierarchy (even sheet sprite which consists of a singular root bone) and each Sprite animation is made up of bones to represent that animated character. Allowing for the 2D Character to render both the Sheet and Skeletal character by running through each of the bones.
3D animation similarly is made up of the joints of a character which are each updated based on the current animations pose or physics in the case of ragdoll animation. They primarily make use of blend trees for their animation for the large part however there is the option for playing an animation file without the use of a blend tree. Each 3D Character can also initialise and hold multiple blend trees.