Friday, 5 June 2009

Smoothly does it

One of the most irritating things when making a movie - to my eyes, at least - is the unwanted animation "pops" when a character suddenly snaps from one pose to another. And then you get limbs going through each other, characters going through the floor, and so on. Glitches like these can ruin an otherwise perfect shot, it's disconcerting, and, well, dammit, it just doesn't look good. Sure, there are ways to shoot or edit around it, and it's a common problem with videogame characters, but it's still bloody annoying.

The problem is caused by layering animations one on top of each other, and linking them together. If we knew exactly what you were going to do, we could ensure that everything just worked fine. However, because this is a movie tool, the range of possibilities is, quite literally, infinite. We can find ourselves blending together the animations for walking (mixing two gaits and the speed customised), using a prop (with each individual activity customised), gesturing (customised), facial expression and improvisation (yes, also customised), talking (you get the idea now?), looking at something (possibly a moving object), breathing, and blinking. Each of those is a separate mathematical transform that has to be applied to the skeleton, and then checked to make sure it's anatomically possible. Blending them all together involves taking all the different transformations and working out how they all go together. So one activity may tell the character to put her hand behind her head (improvised scratch), another tells her to lift it straight up (dance gesture), and a third tells her to swing it by her side (walk) - you try doing all three at once and see how far you get. It's no wonder our Moviestorm characters get confused.

Here's an example movie made in Moviestorm 1.1.5.

Yeuch, huh? All he's doing there is walking, playing the trumpet, and sitting down (and breathing and blinking and improvising). The existing animation blending just can't cope. His feet go through the floor, his right arm goes through his torso, his left arm pops - oh, it's just horrible.

And here's the same again using Mark's new blended animation code. You really, really don't want an explanation of the complexity of the mathematics that go into this. Even Dave runs away screaming when Mark starts explaining things like this. (Actually, even if you do want an explanation, we're not going to tell you. This is really hairy stuff, and we ain't giving it away.)

It's not quite perfect yet, that's true, but it's much, much better. The bad news is that you won't get to see this till 1.1.7, and we don't yet have a release date for that. It'll be a couple of months at least. Sorry.


Unknown said...

Fantastic! This attention to detail will elevate Moviestorm's ability to show natural movement ten-fold. No more isolating individual frames for cutting!

sisch said...

Ooh great work! As I'm often layering about 7 or more different gestures over each other (which needs a lot of experimenting as of now - some work fine together, some don't)I'm sure this will make my life much easier - can't wait! :)

twak said...

Bloody hell, I bet that looks like a monolithic chunk of matrix code from the inside ;) nice job