Character Animation System

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki
RdR
Competition winner
Posts: 273
Joined: Tue Mar 29, 2011 2:58 pm
Contact:

Character Animation System

Post by RdR »

Hello,

We (Erelas and I) have been working on a Character Animation Sytem for our graduation project the last few weeks.
We designed it in a way it can be used independent from the render & physics engine, as a demo we're using Irrlicht to render the skeleton and skin.
This way its easy to integrate it in any project to animate your characters.

Features
- Arbitrary bones per skeleton
- Multiple skins per skeleton
- Multiple animations per skeleton
- Arbitrary keyframes per animation
- Animation controls for speed, direction, looping, weight control and keyframe range
- Animation mixing
- Animation interpolation (linear)
- Animation blending
- Animation synchronization
- Animation layering
- Animation mirroring
- Animation fading:
  • - Fade in
    - Fade out
    - Cross fade between 2 animations
- Procedural animation support
- Custom (binary) file formats
- 3DS Max exporters
- Multithreading
- Multiple texture per skin
- Character bone attachments
- Per bone scaling
- Per bone/per animation weighting
- Per bone/per animation scaling
- LOD
- Custom controllers
- Event callbacks
- Inverse Kinematics
- Hardware skinning
- Software skinning

TODO
- More LOD options (on multiple levels, skin, animation & skeleton)
- Bezier interpolation for animations
- Optimizations



Screenshot
Image

Video
TODO

If anyone has some suggestions for useful features, post them ^^
Btw I'm not sure if its correct to post it in this category, if not let me know.

Side note:
We're using C++11 to develop for this system.
So far it is really nice and fast development. I recommend people to try it out asap!
Its supported by GCC 4.7+ and VS 11 (VS 2012)
For MinGW: http://sourceforge.net/projects/mingwbuilds/
Last edited by RdR on Tue Oct 29, 2013 3:07 pm, edited 14 times in total.
hybrid
Admin
Posts: 14143
Joined: Wed Apr 19, 2006 9:20 pm
Location: Oldenburg(Oldb), Germany
Contact:

Re: Character Animation System

Post by hybrid »

Yeah, definitely the correct forum and a very interesting project. Is it hardware or software skinned?
Burns
Posts: 26
Joined: Fri Jul 16, 2010 12:10 am
Contact:

Re: Character Animation System

Post by Burns »

Look nice!
RdR
Competition winner
Posts: 273
Joined: Tue Mar 29, 2011 2:58 pm
Contact:

Re: Character Animation System

Post by RdR »

hybrid wrote:Yeah, definitely the correct forum and a very interesting project. Is it hardware or software skinned?
Oke good ^^ The characters are hardware skinned (Still WiP tho).
Focus was to implement the skeletal animation features first.
Burns wrote:Look nice!
Thanks, will upload a video soon (When I get some decent animations for a better demonstration)
Last edited by RdR on Wed Jun 20, 2012 10:11 am, edited 1 time in total.
Virion
Competition winner
Posts: 2148
Joined: Mon Dec 18, 2006 5:04 am

Re: Character Animation System

Post by Virion »

nice. can't wait for the video. :D
REDDemon
Developer
Posts: 1044
Joined: Tue Aug 31, 2010 8:06 pm
Location: Genova (Italy)

Re: Character Animation System

Post by REDDemon »

Does that do polar interpolation for rotations or just linear interpolation of matrices? :) great work. If not you can easily add that for more realistic animations even with few keyframes (very memory wise especially for mobile devices)
Junior Irrlicht Developer.
Real value in social networks is not about "increasing" number of followers, but about getting in touch with Amazing people.
- by Me
RdR
Competition winner
Posts: 273
Joined: Tue Mar 29, 2011 2:58 pm
Contact:

Re: Character Animation System

Post by RdR »

REDDemon wrote:Does that do polar interpolation for rotations or just linear interpolation of matrices? :) great work. If not you can easily add that for more realistic animations even with few keyframes (very memory wise especially for mobile devices)
I'm not familiar with the term polar interpolation, but the interpolation is done with spherical linear interpolation (slerp).
Any good reads about polar interpolation (for quats)?

And bezier/curve interpolation is still on our TODO list.
REDDemon
Developer
Posts: 1044
Joined: Tue Aug 31, 2010 8:06 pm
Location: Genova (Italy)

Re: Character Animation System

Post by REDDemon »

very nice :)
Junior Irrlicht Developer.
Real value in social networks is not about "increasing" number of followers, but about getting in touch with Amazing people.
- by Me
RdR
Competition winner
Posts: 273
Joined: Tue Mar 29, 2011 2:58 pm
Contact:

Re: Character Animation System

Post by RdR »

REDDemon wrote:very nice :)
Thanks. But what did you ment with polar interpolation?

Added TODO list to start post:
- Multi threading
- LOD (on multiple levels, skin, animation & skeleton)
- Bezier interpolation for animations
- Optimizations

When we're finished with our graduation we would like to make this project open source.
If anyone has suggestions for features or you miss something please post it!
Nadro
Posts: 1648
Joined: Sun Feb 19, 2006 9:08 am
Location: Warsaw, Poland

Re: Character Animation System

Post by Nadro »

This project looks really interesting :)
Library helping with network requests, tasks management, logger etc in desktop and mobile apps: https://github.com/GrupaPracuj/hermes
REDDemon
Developer
Posts: 1044
Joined: Tue Aug 31, 2010 8:06 pm
Location: Genova (Italy)

Re: Character Animation System

Post by REDDemon »

sorry for me polar interpolation = slerp. Didn't know english term for that ^^
Junior Irrlicht Developer.
Real value in social networks is not about "increasing" number of followers, but about getting in touch with Amazing people.
- by Me
fmx

Re: Character Animation System

Post by fmx »

Good work there :D
very extensive feature set already, i cant think of anything else to suggest

How about the option for custom bone control, for ragdolling etc?
I know that sounds trivial, but you haven't mentioned it in your list
RdR
Competition winner
Posts: 273
Joined: Tue Mar 29, 2011 2:58 pm
Contact:

Re: Character Animation System

Post by RdR »

fmx wrote:Good work there :D
very extensive feature set already, i cant think of anything else to suggest

How about the option for custom bone control, for ragdolling etc?
I know that sounds trivial, but you haven't mentioned it in your list
Thanks!

Yes, we have thought about those cases.
The core system has a list of controllers which handle all characters each frame, by default only a AnimationController is supplied in the source.
That way its possible to create and register your own controllers, like an InverseKinematicsController, LODController and more.
Because its separated from the main system, its easy to integrate with your current applications and physics libs.
You can access the skeleton and more from the character instance supplied by Controler::animate()

A priority needs to be supplied when constructing the controller so you can order the controllers the way you like.

Controller interface:

Code: Select all

 
class Controller
{
private:
        unsigned int m_priority;
 
public:
        /**
         * Constructor
         * @param priority the priority for CAS in which order the controllers are used ( 1 = high priority )
         */
        Controller(unsigned int priority);
 
        /**
         * Destructor
         */
        virtual ~Controller();
 
        /**
         * Animate an character
         * @param character
         * @param deltaTime in seconds
         */
        virtual void animate(std::shared_ptr<Character> character, float deltaTime) = 0;
};
 
RdR
Competition winner
Posts: 273
Joined: Tue Mar 29, 2011 2:58 pm
Contact:

Re: Character Animation System

Post by RdR »

After some time working on documentation (thesis), we implemented some more stuff:

- Multi threading, using a thread pool
- LOD options for animation & skeleton (more options to come)
- General optimizations

Also created a benchmark application, to test the performance of the library (without rendering).
And the results are nice imo (not sure what other library do).

Will create a video when I get some better looking animations (current animations are crappy looking).

Screenshot animating multiple characters separately (using the same controls, so they have the same pose).
Colors define the LOD level they are in.
LOD Distances are customizable per character, so its possible to prioritize characters.
Image
Mel
Competition winner
Posts: 2292
Joined: Wed May 07, 2008 11:40 am
Location: Granada, Spain

Re: Character Animation System

Post by Mel »

Looks awesome :)
"There is nothing truly useless, it always serves as a bad example". Arthur A. Schmitt
Post Reply