Image Image Image Image Image

© Copyright 2012 Your Company | RSS Email                                                                                                                                                                                                                  

Scroll to Top

To Top





In Animation
Motion Graphics

By Mitch Davis

Character Animation in After Effects

On 16, May 2012 | 21 Comments | In Animation, Motion Graphics | By Mitch Davis

Now, we all know that After Effects is cool. So, if you don’t want to keep hearing it, you should probably stop reading. Otherwise, read on my friend…

Despite after effects being a “Compositing” software, it is constantly being pushed to new limits by creative geniuses all over the world. One of those geniuses is a small studio based out of San Francisco, CA known as Tiny Inventions. They are most famous for their short film “Something Left, Something Taken“. For this film, Max and Ru (The creatives behind the company) developed a new type of character animation in After Effects that is unparalleled. Although this may be expected in certain animation softwares… *cough *ToonBoom *cough, it was never expected in AE.

I was so impressed with their animations that I emailed the specialist that built the Rigg (Sean McBride). Not only did he answer a lot of the questions I had on how it was done, but he actually sent me an After Effects project file containing part of a rigg. This post contains some of the ins and outs of how it was done and why it’s so FREAKING COOL!


Puppet Rigg Animation Test

Joints for this rigg were made using puppet pin points. The puppet pin tool in After Effects is a lot like the Puppet Warp tool in Photoshop, except it can be animated. The points should be placed at the joints of the character (Each limb is a separate Photoshop Layer imported into After Effects). Now the points can be linked to Nulls and parented to each other so that everything moves in reference to each other; i.e. you move the hand and the rest of the arm follows while still staying connected to the torso at the shoulder. Targets were made to replace the nulls and converted to guide layers so that they would not be visible when rendered.

AE Puppet Rigg

The mouth of this puppet rigg was animated in a nested comp. Different words would be made into complex animations. Those animations could be called from the main comp in two ways:

  1. Using Layer Markers
  2. Linking the time or a nested comp to the rotation of a solid or null

In this case, we used option two (we will explain option one later). Through a time-remapping expression, we linked a nested comp’s time to an icon’s rotation. By rotating the icon one degree (hot key: + or -) we move forward one frame within the nested comp without ever having to leave the main comp. This is a huge time saver! The same can be done for eyes, hands, and anything that frequently needs to change shape.


In the example at the top of the page, we had a the character dancing to Tarzan Boy! First of the beats of the song were converted to Layer Markers using this After Effects script: BPM Markers. From there I would animated a dance move that laster four beats and could loop. I would name this dance move accordingly. In other words, if it was a hump, I would name it “hump”. This was done by adding a Layer Marker to a null named “action”. Wherever the “hump” Layer Marker was placed, that’s where the move started. From there I could call/trigger this “hump” action from the main comp. The importance of this is that I can animated several dance moves, and as long as I name them accordingly, I can call/trigger them anytime I want from the main comp! If I decide a two-step would look better during the chorus, I can easily change my “hump” Layer Marker to “two step”.

Puppet Rigg Layer Markers


Just like above, we can use Layer Markers to call other actions, such as mouth movements for lip syncing. I could create a series of words, such as “hello”, “fire”, or “Get to the Chopper!” From the main comp, I can listen to the audio and call any word I want at anytime. Here’s an example of what the project looks like:

Lip Syncing for Puppet Rigg

To make things even easier, we can take out audio clip into Premiere Pro and Analyze Speech. It should automatically make a guess as to what you the audio is saying and add a Layer Marker to each word at the right time. When you export this audio file from Premiere it also exports the Metadata (the data that carries the markers (or “Cue Points). When this is brought into After Effects the Layer Markers can be copied to any layer of your choice using this AE script: rd_CopyMarkers. Now the metadata has created several actions. For example, the Layer Marker “Immediately” can now be animated and called/triggered.

I learned a lot from this project and I hope this will encourage everyone to keep experimenting with your software of choice. Push it to the limit!

Here are some of the resources I used for this project. Thanks to each and every one of these creative geniuses. You’re like the first person to try a parachute; Insane but Brave:

  • Dan Ebberts – He is a wiz when it comes to JavaScript in After Effects. Super nice too, I emailed him with questions and he instantly emailed back!
  • Tiny Inventions – Their blog for Something Left, Something Taken is very in-depth
  • Sean McBride – He is the one who built and animated the Riggs for Something Left, Something Taken. Great guy too; emailed me and AE project file!


  1. Hi,

    Great article.

    (After Effects Artist)

  2. Would you be able to share the Project files with me. I am excited about character animation in AE. so have tried with Duik and this looks very in depth. Would love to get my hands dirty on this. thanks!

    • Hey Kalveer! Thanks for your interest! I am busy at the moment but when I get the chance soon I would love to put a project file together for you! It’s by far the most complex thing I’ve tackled in AE! Very fun to learn!

      • Thanks for the quick reply Mitch. Hope you get some free time. Looking forward to exploring the Project. I ma sure it will be fun for me too, Cheers!

        • I just emailed you a project file. Have Fun!

          • Thank you Mitch, I have received it. I am psyched to look at the project. You are a superstar. Cheers

          • Hey,

            I love this article, however it is a bit hard to follow. Can you send me the example file, too? I would like to see how to do the scripting part with the markers.

            I am currently working on a game project and have used a similar technique (just without pins) in a previous project. I have used nulls and sliders to control different limbs that were parented accordingly.

            I would be glad if you could send me the file to share the knowledge. :)

            Thanks for the article!

          • Hello Andrej! Thanks for your interest on this article. I have sent you an email with a project file. Let me know how it goes. Also, great design work!

  3. Sir, this article is way more useful than others on the net that I’ve seen. I really want to know how you did this. I love to know how to make one. Hope you can sent me the Project File. So looking forward for it sir.


  4. This is great! I’m really interested to see how you linked the time of a nested comp to a layer’s rotation. Can you elaborate or send an example?

    • Ah. I got it. I have a phoneme for each second set up in a 15 second time-remap enabled nested comp. I’m controlling which phoneme to show from a 15 point wheel. I applied this expression to time-remap property of the nested comp:

      The “/-24″ is to make each of the 15 points on the wheel correspond to a second in the nested comp.

  5. Any chance I can get that project file too? I would love to dig in and see how it’s done!!!

  6. Hi Mitch,
    I’m really into character animation in After Effects for the moment, but it’s a steep learning curve.
    I’d really be helped if you could send me the project file, so that I can analyze how everything is connected. Your explanation is great, but too fast for me – some steps are too big.
    Thanks a million.

  7. Mitch Davis

    Hey guys, I’m glad everyone is interested in the making of this character rigg. I will post up a link to a project file soon so you all can dive in and mess around with it.

    • Looking for forward to it. Thanks.

  8. I would also love the project file ! Please.

  9. Mitch Davis

    Sorry for the delay everyone, but here is a project file:

    I hope this helps you all on learning this process. Let me know if you have any questions.

  10. Love this article! If you need any animated demo video, corporate films, explainer video, explanation video, handcrafted explainer videos, infographics, sales videos, startup videos, please check out for showreel and work samples.

  11. Hi there

    Thanks so much for this article and the project files :)

    I have tried to rig your character as you have, and I’ve been pretty successful. Everything in my project is basically the same as yours except I haven’t time remapped anything. The only issue is when I move the character’s hands/feet the elbows/knees stay where they are and do not follow the controller.

    Do you have any idea why this would be happening?

    Thanks so much! Have learnt a bunch already. Appreciate the knowledge!

    • Mitch Davis

      Hey Kerry,

      You should have something like this expression applied to the position of your elbows/knees PINs.

      lyrA = thisComp.layer(“PIN_TARGET_L_ARM_1″);
      lyrB = thisComp.layer(“PIN_TARGET_L_ARM_3″);
      ptA = lyrA.toComp(lyrA.anchorPoint);
      ptB = lyrB.toComp(lyrB.anchorPoint);
      ptC = ptA + (ptB – ptA) / 2;
      ptC + value

      Also, make sure the “Enable Expression” icon is clicked and doesn’t have a strike going through it. If that expression is disabled, it will stay locked when you move the hands/feet like you were saying.

      Also, you won’t have as much control but this script makes it VERY easy to set up simple puppet riggs. If I’m in a crunch I build riggs in this often. Give it a try and see how you like it:

      • Thanks so much for your speedy response! I had already been looking at that script, funnily enough, so think I’m just going to go ahead and get it now.

        So glad I stumbled across this blog, you guys write some great stuff!


Submit a Comment