FRONTLINE: Inside Assad’s Syria premieres Tuesday 10/27

I recently created the graphics for an upcoming FRONTLINE episode, Inside Assad’s Syria. It premieres next Tuesday at 10PM, and will be free to watch online after.

All eyes are on Syria as Russia’s military campaign intensifies, and as tens of thousands of refugees continue to flee the war-torn country for Europe.

What is life like for those who are left behind?


Free After Effects Script: Incremental Screenshot

I got lazy about exporting a title sequence, and put together a quick little After Effects script. It’s nothing fancy, but it works and might come in handy.  It saves still frames from your active comp’s work area on an incremental basis (e.g. one frame every x seconds), with a filename based on the topmost active text layer at that time.

Download Incremental Screenshot v.0.0.3
Drop this script in the folder you want to save to, adjust the settings at the top to your preference, then run it from File > Scripts > Run Script File.

Works in Windows on CC2015, assume it works elsewhere but I haven’t tested it. It probably won’t make your computer catch fire, but run at your own risk.

Also, thanks to renderTom for pointing me toward saveFrameToPng!

Why does Credits Are Due require AE CC2015?

I’ve had a bit of press and some very nice feedback on my new script (thanks everyone!). If you’ve bought a copy and want to show off things you’ve built with it, get in touch.

A couple people have asked why it’s only for CC2015, though. There are two big reasons:

Credits Are Due makes use of the new sourceRectAtTime() expression method. I love this feature: it lets you access the dimensions of layers with dynamic borders, which makes it possible for the text layers in Credits Are Due to know how much space to leave for their neighbors. The script essentially works by measuring all the layer heights, spacing things out accordingly, then scrolling the parent layer. (There’s also a cameo by my favorite little expression hack, setting posterizeTime() to a super-low value like .00001. This lowers the expression’s effective framerate to almost nothing, so you get live updates when the comp is edited without having to recalculate layer dimensions on every frame.)

But sourceRectAtTime() was added in the most recent update to After Effects CC2014 (13.2). So why can’t you use that version with Credits Are Due? Well, you can render your credits in it. But if you try to edit them, you’re gonna have a bad time. Every layer in the comp needs to scroll, so as soon as you add a new one that’s not yet linked, you’ll spend most of your time clicking through “expression disabled” popups. Even more fun: manually re-enabling all those expressions once the new layer’s been added to the scroll.

However, CC2015’s new expression handling means things Just Work. Expressions re-enable themselves automatically as soon as they’re able. No more popup error windows. I could probably add a bunch of checks to skip non-scrolling layers and make the math still work, but I want to keep the code to a minimum — expressions can be slow to calculate (though they do seem faster in 2015), and a couple hundred layers into a project you really start to notice. Temporarily disabling the scroll during setup seems a small price to pay for faster playback — particularly when you have a client standing over your shoulder making changes.

tl;dr: new stuff in CC2015 makes Credits Are Due work in a way that won’t make you want to stab yourself in the face. Which, when you’re already stuck making a credit scroll, is important.

Credits Are Due

Credits Are Due: New After Effects script in progress

I’m working on a new After Effects script for building responsive, easy-to-edit credit scrolls.

  • Dynamic layout: rearrange, restyle or reclassify existing elements,  or add new ones anywhere in the scroll, and everything will snap into place and update accordingly — and leave your custom text formatting alone.
  • Automatic arbitrary multicolumn layouts (say that five times fast)
  • Add images and footage as well as text
  • Scroll in whole-pixel increments
  • Change global scroll speed, position and element spacing
  • Speed up previews and rendering by auto-trimming layer duration to match on-screen visibility.

It’s still missing snazzy icons and the ability to grab existing elements by type (which I’m totally stealing from Layer Selector Toolbar), but everything else pretty much works.

Want to see it in action? Check out these incredibly dull screencasts:

Editing an existing sequence:

Includes cameo by world’s slowest layer trimmer, only outdone by my earlier version of said layer trimmer!

Creating a new sequence: 

You can also add text and image layers by any other method — once they’re in the comp, just assign them element types and they’ll scroll happily along.


This tool takes advantage of the recent changes to expressions in AE, so it requires CC2015 or the 13.2 version of CC2014. (And is much nicer to work with in 2015).

Credits are never fun, but this should take some of the pain out of the process. If you’re interested in beta testing, get in touch.

handMade hand track nulls

Script in progress: a Leap Motion recorder for After Effects

I’ve been building a tool for recording 3D motion tracks, camera moves and hand gestures direct to the After Effects timeline with the Leap Motion.

There’s still a ways to go yet on development. I have to create the UI and tweak the hand puppet rig (and, um, make the hand tracker work with right hands…), but I think this is going to be a useful addon for both literal hand-animation stuff like UI demos and pre-animating gestures for Character Animator puppets, as well as more subtle things like organic camera shake.

The Leap is quite precise in its data — you can even tell different people’s hand tracks apart.


Shaky camera move:

I’m thinking about calling it handMade. Good name?

lstscreenshot pixelated

New version of Layer Selector Toolbar on sale now

Just released a new version of Layer Selector Toolbar. Save 25% this week only. 

Version 1.5 is a free upgrade, and lets you limit selections to layers active at the current time by ctrl/cmd-clicking. This is really useful for things like grabbing all the text currently on screen, or, inverted (ctrl/cmd+shift-click), for shying or turning off all the layers you’re not currently working on.

In less-visible updates, the script has also been rewritten from the ground up. 1.5 is made from faster, much more compact code. (Seriously, this thing is like a third as long as it used to be.) It should play a little bit nicer with giant comps.

Documentary Animation | Motion Graphics | Design