Character Animation System

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki

Character Animation System

Postby RdR » Tue Jun 19, 2012 1:21 pm

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
- Unlimited bones per skeleton
- Multiple skins per skeleton
- Multiple animations per skeleton
- Unlimited 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 fading:
    - Fade in
    - Fade out
    - Cross fade between 2 animations
- Own file formats
- 3DS Max exporters
- Multi threading
- LOD options (on multiple levels, animation & skeleton)
- Custom controllers
- Per bone scaling
- Multiple texture support per skin

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 09, 2012 11:40 am, edited 9 times in total.
User avatar
RdR
Competition winner
 
Posts: 259
Joined: Tue Mar 29, 2011 2:58 pm

Re: Character Animation System

Postby hybrid » Tue Jun 19, 2012 2:01 pm

Yeah, definitely the correct forum and a very interesting project. Is it hardware or software skinned?
hybrid
Admin
 
Posts: 13947
Joined: Wed Apr 19, 2006 9:20 pm
Location: Oldenburg(Oldb), Germany

Re: Character Animation System

Postby Burns » Tue Jun 19, 2012 2:21 pm

Look nice!
Burns
 
Posts: 26
Joined: Fri Jul 16, 2010 12:10 am

Re: Character Animation System

Postby RdR » Tue Jun 19, 2012 2:22 pm

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.
User avatar
RdR
Competition winner
 
Posts: 259
Joined: Tue Mar 29, 2011 2:58 pm

Re: Character Animation System

Postby Virion » Wed Jun 20, 2012 2:36 am

nice. can't wait for the video. :D
User avatar
Virion
 
Posts: 2102
Joined: Mon Dec 18, 2006 5:04 am
Location: Malaysia

Re: Character Animation System

Postby REDDemon » Fri Jun 22, 2012 5:15 pm

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)
OpenGL is not hard. What you have to do is just explained in specifications. What is hard is dealing with poor OpenGL implementations.
User avatar
REDDemon
 
Posts: 831
Joined: Tue Aug 31, 2010 8:06 pm
Location: Genova (Italy)

Re: Character Animation System

Postby RdR » Fri Jun 22, 2012 5:46 pm

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.
User avatar
RdR
Competition winner
 
Posts: 259
Joined: Tue Mar 29, 2011 2:58 pm

Re: Character Animation System

Postby REDDemon » Fri Jun 22, 2012 7:25 pm

very nice :)
OpenGL is not hard. What you have to do is just explained in specifications. What is hard is dealing with poor OpenGL implementations.
User avatar
REDDemon
 
Posts: 831
Joined: Tue Aug 31, 2010 8:06 pm
Location: Genova (Italy)

Re: Character Animation System

Postby RdR » Fri Jun 22, 2012 8:33 pm

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!
User avatar
RdR
Competition winner
 
Posts: 259
Joined: Tue Mar 29, 2011 2:58 pm

Re: Character Animation System

Postby Nadro » Fri Jun 22, 2012 10:21 pm

This project looks really interesting :)
NBK Game Studio - Official Site:
http://www.nbkgamestudio.pl/
Nadro
 
Posts: 1005
Joined: Sun Feb 19, 2006 9:08 am
Location: Warsaw, Poland

Re: Character Animation System

Postby REDDemon » Sat Jun 23, 2012 8:46 am

sorry for me polar interpolation = slerp. Didn't know english term for that ^^
OpenGL is not hard. What you have to do is just explained in specifications. What is hard is dealing with poor OpenGL implementations.
User avatar
REDDemon
 
Posts: 831
Joined: Tue Aug 31, 2010 8:06 pm
Location: Genova (Italy)

Re: Character Animation System

Postby fmx » Wed Jun 27, 2012 3:54 pm

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
User avatar
fmx
 
Posts: 559
Joined: Wed Dec 06, 2006 9:28 am
Location: UK

Re: Character Animation System

Postby RdR » Wed Jun 27, 2012 6:55 pm

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:
cpp 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;
};
 
User avatar
RdR
Competition winner
 
Posts: 259
Joined: Tue Mar 29, 2011 2:58 pm

Re: Character Animation System

Postby RdR » Fri Jul 06, 2012 4:10 pm

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
User avatar
RdR
Competition winner
 
Posts: 259
Joined: Tue Mar 29, 2011 2:58 pm

Re: Character Animation System

Postby Mel » Sat Jul 07, 2012 11:50 am

Looks awesome :)
http://santiagong.daportfolio.com/
"There is nothing truly useless, it always serves as a bad example". Arthur A. Schmitt
User avatar
Mel
Competition winner
 
Posts: 1783
Joined: Wed May 07, 2008 11:40 am
Location: Granada, Spain

Next

Return to Project Announcements

Who is online

Users browsing this forum: No registered users and 1 guest