About Animadead

  Site Hosted by:

SourceForge.net Logo

Support This Project

This is a skeletal animation library designed to load and play skeletal animations. It supports models that are composed of several swappable meshes bound to a single skeleton that can be driven by multiple animations.

There is an export plugin for Maya provided, and others are in development, including a plugin for 3D Studio Max and Lightwave.

Animadead was written in C++ and has no dependencies. However, example implementations are provided that use OpenGL and SDL.

This library is distributed under GNU LGPL version 2.1. This license allows you to use Animadead freely in commercial programs as long as you link with the dynamic library.


A few people have asked why Animadead jumped from version 0.7.1 to 2.0, so to clarify, here's a description of the versioning.

Goal Version

When I first started writing Animadead, I set a goal of a certain set of features I wanted to implement for a solid, fully usable, library, and several complete demos that demonstrate what the library can do. This state I refer to as the "goal version". While working towards the goal version, I keep a running list of things I eventually want Animadead to do. When I reach the goal version I decide which of those features, and whatever other ones I can think of to make into the new goal version.

Version Numbers

The first number of the version is the last goal version I have reached, and the number after that represents an approximation of how far I am towards reaching the next goal version. So 2.1 means I have reached my second goal version, and it's 10% of the way towards goal version 3.0. Additional numbers, like 2.1.1 allow for more precision. So, I think of 2.1.1 as 11% of the way towards version 3.0. The version 2.11 you will probably never see for this versioning system unless I've pretty much done everything for the next goal version except for some feature I'm still working, but decided to implement some things on the wish-list first.

Why I use this system

The reason I do this, for one, is that setting goals helps me get things done, and second, it helps prevent feature-creep. It really helps me to avoid just programming the most rewarding or most useful features to me. Often I might decide to implement something I'm never going to use, but it's very useful to a lot of other people. A good example is the 3D Studio Max export plug-in. Though I might wait until it's the last thing I implement for my goal version, it makes sure I get it done within a reasonable time.

The Big Jump

And now to answer the question, why Animadead went from version 0.7.1 to 2.0. When I was working on the first goal version, I started to realize a lot of the things I was doing were the wrong way to go about skeletal animation, so I stopped working towards version 1.0, really redesigned it, and set a goal for 2.0. I had a lot of momentum writing the thing, and it wasn't too bad changing old code over to the new system, so I went all the way to my goal version before releasing it. That's kind of why I disappeared for so long, and suddenly came back with this crazy new version. Besides, I couldn't really have released it as version 1.* because I never really reached goal version 1.0.

© Copyright 2006 John Butterfield.
All Rights Reserved.