Monday, January 21, 2008

The Beginning

It's about time I started this blog, and at the expense of alienating some of my friends by showing my geekier side, I'll begin with a screenshot from a project I'm working on:



It started out as a "learn C# project", but things like this tend to snowball and before long you're working on something quite big.

So, for all of you not into 3D or who I haven't been boring to death lately with the topic: It's a tree based high-level animation blender engine for my favourite 3D engine ( + Editor!! ).

After the Google Summer of Code project that was to provide some higher level animation support to Ogre failed without much to show for it except some interesting comments, I thought that it would be nice to contribute to the community.

This will be a simple implementation of some of the topics discussed there though. No IK, sorry. Just an implementation with blend ( or mix ) nodes and transition nodes ( e.g. State Machines ). This Gamasutra article is probably closer to what I'm trying to achieve.

Currently I have a very simple working version for the editor, but does everything that it should, like create different kinds of nodes, connections, etc. You can also watch the results in a viewport as you interactively update the parameters. It's quite nice really.

My main objective is to be able to control a character animation via a reduced set of parameters. For example, in the screenshot above the whole animation tree can be controlled by only two values.

The C++ implementation will start soon( ish ). It will be a cleaned up version of the C# code. A prettier version that doesn't have to deal with user screw ups.

So, when a usable C++ implementation is available, and I write code to save and load animation trees, I will be releasing everything.

3 comments:

Cabron Tormenta said...

Yeah man! We were expecting this.
Don't forget to put tags in your posts. :p

Maxim said...

Great work! Did you create your own flow diagram control?

Pau said...

Thanks!

@Mike: Yep, the diagram control is custom tailored. I'm currently working on polishing an improved version of it to release publicly as open source.