Page 1 of 8

TecnoFreak: Blend Tree Animation System[1.2 Blendmasks]

PostPosted: Tue Oct 21, 2008 2:19 pm
by novaumas
TecnoFreak Animation System

Sourceforge project page

I recently posted about The Teddy Incident game and said I'd create a new one to talk about the animation system.

Mandatory screenshots follow :D
( click for larger images )

Image

Image

This project focuses on providing a higher level of control over animation on what currently is offered by Ogre.

It has two parts, a runtime, and an editor.

The runtime has the job of updating the animation trees and gives access to parameters to change the behaviour of the tree. All control of the animation tree is done through a simple parameter interface.

The editor is used to create the files that the runtime uses.

The main objective is moving the responsibilities of controlling animations away from the programmer as much as possible, and handing them to an artist or technical artist. This way, the artist will have more control over the final result and has a quick way of seeing how his animations will display and transition in the game, and toy with it to get better visual results much more quickly.

The animation runtime source code is available in the sourceforge svn. Here is the project page.

The editor can also be downloaded from sourceforge, although source code for it isn't there.

Here is a video showing the editor in action, it's actually the best way to see what this project is all about.

Image

For more information on animation blend trees, this is the article that inspired the project.

I've also talked a little about the animation system on my blog, so it may be of interest.

PostPosted: Tue Oct 21, 2008 2:36 pm
by Vectrex
that's really cool and useful. With ogre 1.6's blend masking added it'll be a great tool.

PostPosted: Tue Oct 21, 2008 2:53 pm
by eber
Looks great! Almost like a lite version of Morpheme from Natural Motion.

All the gui is C# right? How do you get that type of work area, with boxes and connections between them etc? Do you, or anyone else for that matter, know if you can do something similar with wxWidgets?

Again, the editor looks great and i'm loving the art direction. Good stuff!

PostPosted: Tue Oct 21, 2008 3:02 pm
by SunSailor
eber wrote:Looks great! Almost like a lite version of Morpheme from Natural Motion.

All the gui is C# right? How do you get that type of work area, with boxes and connections between them etc? Do you, or anyone else for that matter, know if you can do something similar with wxWidgets?

I second that question, the graph widget looks great. Is it custom made or a bought component, if not part of the GUI toolkit originally?

PostPosted: Tue Oct 21, 2008 3:05 pm
by TheSpaceMan
Yeah i like it, you make it actualy look fun to make tools.

PostPosted: Tue Oct 21, 2008 3:23 pm
by novaumas
With ogre 1.6's blend masking added it'll be a great tool

Definitely. It's currently built for 1.4, but adding blend masking has been on the todo list since I saw the patch for the feature. I haven't downloaded Ogre 1.6 yet, but will do soon.

How do you get that type of work area, with boxes and connections between them etc?

It's a custom control.
I did look hard for something that did what I needed, and the most similar thing I found was a lib called SchematicControl ( I haven't found links to download it anymore though ).
I didn't like the usability of it from an end user perspective, but it esthetically matched what I needed. I looked at how he did it and rolled my own control. I basically involves overriding the mouse functions and writing your own paint routine.
If anyone finds a good library ( and free ) to do this kind of stuff as a C# control, I'm also very interested.

you make it actualy look fun to make tools

:lol: Building tools is fun!

PostPosted: Tue Oct 21, 2008 3:58 pm
by eber
Strange that that kind of widget/control hasn't been made available by anyone. Especially for the open gui/libs. I might have to try making a custom widget type for wxWidgets similar to this.

Thanks for the reply, keep up the good work :]

PostPosted: Tue Oct 21, 2008 4:43 pm
by SunSailor
Could you make at least the source of this control public? It's not, that I wouldn't know how to do such, but having a working implementation makes the design of the programming interface much more easier Your solution looks *very* polished, especially with the subcontrols in it - havn't seen such in that flavour before... Great work!

PostPosted: Tue Oct 21, 2008 4:55 pm
by Nauk
Building tools is fun!
So is :) Excellent job!

PostPosted: Tue Oct 21, 2008 5:24 pm
by novaumas
Thanks :)

Strange that that kind of widget/control hasn't been made available by anyone

It also perplexed me... I haven't looked for some time for such a control though, so it may actually exist.

On opening the editor source code for the editor: It will eventually happen, but not for the current version. I will keep it up to date with the development version of the runtime.

On opening the source code for the diagram controls: In case I did ( and I'll probably will :) ), I'd like to make sure that additions to the controls would be also released back for public use. I'm not very knowledgeable about open source licenses, so I'll have a look around. Suggestions welcome of course.

PostPosted: Tue Oct 21, 2008 5:39 pm
by Kentamanos
Nice work! :)

PostPosted: Tue Oct 21, 2008 7:26 pm
by SunSailor
novaumas wrote:On opening the source code for the diagram controls: In case I did ( and I'll probably will :) ), I'd like to make sure that additions to the controls would be also released back for public use. I'm not very knowledgeable about open source licenses, so I'll have a look around. Suggestions welcome of course.

Don't get me wrong, I don't intend to use your control directly, I would like to do something similar for wxWidgets. Maybe you could be so nice to mail me the sources of the control, I really only want to look *how* you did it, as it really impresses me (Which is definitly not easy...) - even the header would suffice me.
Too, it would be really great if you would make your control open source. There is a real lack of certain controls and anything that can close these gaps is a win for everyone. E.g., I'm currently working on a NLE control for wxWidgets, as there is nothing for any GUI library I would be aware of.

PostPosted: Tue Oct 21, 2008 7:36 pm
by ppClarity
novaumas wrote:On opening the source code for the diagram controls: In case I did ( and I'll probably will :) ), I'd like to make sure that additions to the controls would be also released back for public use. I'm not very knowledgeable about open source licenses, so I'll have a look around. Suggestions welcome of course.

I have all sorts of uses for a node control and would love to have a wxWidgets version.

If you're looking for a license with commit-back, it's hard to go wrong with LGPL 2. I am somewhat leery of 3 as that strays into areas that potentially make it far less useful in a professional project. I'd also check to see what kind of license wxWidgets use.

Qt is dual licensed: GPL or paid. That requires you to either GPL your project or pay for a license. I personally avoid them because of that.

PostPosted: Tue Oct 21, 2008 7:37 pm
by ppClarity
SunSailor wrote:I really only want to look *how* you did it, as it really impresses me (Which is definitly not easy...) - even the header would suffice me.

Blender has had a node editor for a few versions now.

PostPosted: Tue Oct 21, 2008 9:08 pm
by SunSailor
ppClarity wrote:
SunSailor wrote:I really only want to look *how* you did it, as it really impresses me (Which is definitly not easy...) - even the header would suffice me.

Blender has had a node editor for a few versions now.

Besides that nobody really wants to look into the blender sources, it ain't a common usable GUI widget, this one seems to. Its the API I'm interested in, as such controls are wide spreaded, but commonly application specific.

PostPosted: Tue Oct 21, 2008 10:52 pm
by xadhoom
Fantastic work novaumas!

PostPosted: Wed Oct 22, 2008 1:42 am
by novaumas
@SunSailor: Thank you for your interest, and please don't take this the wrong way, but when I release the source for the controls I'll do so for everyone.
It's not like the API is that great. You'd probably get better ideas from something like this.

@ppClarity: LGPL seems a reasonable way to go. I'm not too fond either of GPL and have a tendency to avoid it all together.
I also don't like the Qt way much, GPL or paid... It seems a little bit like extortion. The Ogre dual license makes much more sense to me.
I'll have to set aside a moment to carefully read the LGPL.

PostPosted: Wed Oct 22, 2008 4:16 pm
by eber
Not to detract from this thread, but I was tinkering with wxWidgets last night and I added a very basic version of node connections. There are some focus bugs (when the mouse leaves the work area etc) and it flickers a bit because it I do too many refreshes per-draw, but it wasn't as hard as I thought.

Right now you can create 'port' types (float, int, whatever) and have them link to compatible ports. You can also have normal widgets/controls within the nodes because it's a plain wxWindow...Hurray!

What's in:
- Node creation
- Adding ports to nodes
- Custom port drawing

What's missing:
- work area pan/scroll
- pretty graphics (I want icon support amongst other eye-candy features)
- node auto-resize when additional controls/ports are added
- any type of serialization...not sure if I care about this actually...

What's nasty:
- drawing is buggy
- there is no memory handling (leaks like a sieve no doubt)
- it looks like ass (can't get transparencies working correctly)
- it's rather cpu intensive...I think (only when effecting nodes/connections)

When it's clean/stable enough I'll stick it up somewhere for all to test and play around with. I'll also post it in a separate thread *sry*

PostPosted: Wed Oct 22, 2008 4:29 pm
by SunSailor
Very offtopic, but very appreciated, too ;). Please, keep me informed, maybe we can join forces. Simply drop me a PM for contact, we could exchange mail adresses then.

PostPosted: Thu Oct 23, 2008 12:21 am
by alexdbkim
Looking very nice. =) I wonder how you made that tree control thing. Did you use some GUI library? or did you create it by your self?

cheers,

PostPosted: Thu Oct 23, 2008 12:25 am
by SunSailor
Sorry, maybe I missed something, but what's so special about the tree control? Looks to me like a standard tree control available in every recent GUI toolkit... Even .net ;).

PostPosted: Thu Oct 23, 2008 12:31 am
by alexdbkim
SunSailor wrote:Sorry, maybe I missed something, but what's so special about the tree control? Looks to me like a standard tree control available in every recent GUI toolkit... Even .net ;).


:) I didn't mean the normal tree control but the one shows linkages between elements in the middle of the screen shorts. It is looking cool =)

cheers,

PostPosted: Thu Oct 23, 2008 12:32 am
by alexdbkim
SunSailor wrote:
eber wrote:Looks great! Almost like a lite version of Morpheme from Natural Motion.

All the gui is C# right? How do you get that type of work area, with boxes and connections between them etc? Do you, or anyone else for that matter, know if you can do something similar with wxWidgets?

I second that question, the graph widget looks great. Is it custom made or a bought component, if not part of the GUI toolkit originally?


oh You called it "the graph widget" =) and you did the same question already =)

sorry I should've read the entire thread first.

cheers,

PostPosted: Thu Oct 23, 2008 12:06 pm
by SpannerMan
Hey novaumas, this animation tool looks excellant! Releasing this system (the runtime and the editor) to the public would be a very much appreciated!

PostPosted: Thu Oct 23, 2008 12:35 pm
by novaumas
I've added a more clear link to first post in the thread to the sourceforge project page. The runtime source code is in the SVN there, and the editor is available as a download.

I think the bandwith for googlepages has been exceeded and images don't show up any more :(... Anyone know of somewhere more reliable to host them?

@eber: Nice to see someone working on a component like this. I'm working on an cleaner version of mine. If you want to discuss anything about it PM me and I'll be more than happy to help out with what I can.