Wednesday 30 March 2011

Finished the building blocks of my animation system

Some time ago you may have read a post about a WIP animation system that I had started working on. Even though it was never really abandoned I had little free time to work on it, and improvements were made in (VERY) small batches.

That was until last weekend, when after a 10-hour sitting I managed to get all the basic blocks done (finally) . All that remains now, is to bring the GUI up to date... so it can actually be used :D

The animation system itself is (for now) a hybrid of a node system and a pose system. The base abstract interface is IMotion; every other "motion provider" derives from this class. For now, the basics are covered:

1) Sources: Keyframe (for now, IK and Procedural are in the making)

2) Unary modifiers: Loop, Mask, ScaleLength, SpeedChange, TimeRange

3) Binary modifiers: Blend, Transition, Add, Subtract


The nice thing here (I know it's not unique, but it's nice none the less) is the ability to load and play entire blend trees with 2 some lines of code:

IMotion* myMotion = ScnMgr->loadAnimTree("someTree.anm");

myActor->playMotion(myMotion);


That' s where the GUI tool comes in (to simplify the whole process). The ideea is that you can import keyframes from a wealth of (somewhat) standardized sources (.x, .b3d, .bvh, .smd) cut up the skeleton and frames and place them on totally unrelated (but compatible skeleton-wise) meshes.

Right now I'm undecided on what RAD to use for the GUI. The preliminary version was written in Delphi 7 but it's quite old and not really the looker (especially under Win7).

No comments:

Post a Comment