loading...
Cover image for Overgrowth GDC Inspired Animation System

Overgrowth GDC Inspired Animation System

sketchpunk profile image SketchPunk Updated on ・2 min read

Over a year ago I saw a GDC talk about how animation was handled for the Indie game called Overgrowth. The main premise was that with as little as two poses and cubic interpolation you can create walk cycles and other various mobility animations.

Tonight I rewrote an old prototype inspired by the talk. The idea is pretty interesting. In this sample I have only two poses that I replicated from the talk to get me started with something. What I noticed was that you can't really animate the two poses BUT what within it is a 4 frame animation walk cycle compressed into two poses.

Let me explain. The most evident is the legs. Within two poses we have 4 leg poses in total. Two Left, Two Right. Each leg pose is actually 1 frame out of 4 in a basic walk cycle. So all you need to do is create animation frames based off those 4 poses. So you take the two left, then append the two right BUT, you do a quaternion mirror on the x-axis so that right leg animation can work for the left leg. Now you have 4 frames of animation for one limb. You repeat the process for the other limbs.

The last piece of the puzzle is how do you animate the frames? Normally you can just use linear interpolation, but if you look at the demo, you can see that the motion is very robotic. In the talk, they mention that by using Cubic Interpolation you can get a smoother more natural motion out of the two poses. So I added a second mesh that runs the same animation data but with cubic, so you can see the difference with a side-by-side look.

I hope to record a video tutorial in the near future with more details, but why not release the source and demo plus give a bit of overview of how it works. Enjoy.

[Demo]
https://sketchpunk.bitbucket.io/src/fungi_v5/008_overgrowth_cubic.html

[Source]
https://bitbucket.org/sketchpunk/sketchpunk.bitbucket.io/src/master/src/fungi_v5/008_overgrowth_cubic.html

[Overgrowth GDC Talk]
https://www.youtube.com/watch?v=LNidsMesxSE

[Related Links]
http://paulbourke.net/miscellaneous/interpolation/

Posted on by:

sketchpunk profile

SketchPunk

@sketchpunk

10% luck, 20% skill, 15% concentrated power of will. 5% pleasure, 50% pain, And a 100% reason to remember the name.

Discussion

markdown guide
 

Thanks for sharing another amazing concept! You really can tell the difference between the animations.

Lerping is a very effective technique for smoothing out numbers for calcuations and animation, is this the defacto standard or are there other techniques that are just as effective?

 

Linear Interpolation and Cubic Interpolation are the only two options when it comes to saving animations to the GLFT format, so I guess you can count that as the two standards.

Any 1D curve equation can be used to animate or control animations. A lot of times you may see Linear Interpolation supplemented by easing functions, even though its linear lerp, the timing input can be curved to recreate a certain motion.

I've seen animation tools, especially unity that lets you define bezier or maybe even hermite curves that you can use as input to control animations. So when it comes down to it, you can use a lot, just depends what you find and if it does what your looking for. If you build your own animation system, then the skys the limit.

In this example I posted, if you look at the source, you'd see that I wrote a super bare bones Track Animator just to show the diff between linear and cubic. Its a nice example to show it doesn't take to much to make an animator and the changes to use cubic is pretty minor if you compare the two animator objects.

Here's an old article i used when I was learning about curves and interpolation, its pretty good with of code samples. Def worth adding to this post. paulbourke.net/miscellaneous/inter...

Forgot I have a gist where I store lots of the curves I've played with, good resource for code samples
gist.github.com/sketchpunk/f2efce8...

 

Thanks for the addition of those resources! I really appreciate the slimmed down animation system and functional demo to really look at how it's working without a lot of noise.