Improving After Effects

After Effects needs to be rewritten from the ground up. It’s slow, buggy and the UI is years behind other products in Creative Suite. Adobe has taken advantage of the fact that they are the dominant player in the motion graphics market and effectively have no competitors. They keep pushing forward building on 20 years of legacy code ignoring many long withstanding bugs and core improvements that could have slowly made their way in. Here’s a wish list of improvements and features that I would warmly welcome in a new After Effects.


JavaScript is a bad language. And it’s an even worse pick for After Effects scripting language. Javascript is so bad in fact, that entirely new wrapper languages have been built that compile back to Javascript so that people don’t have to deal with it at all. A few reasons why:

  • It’s almost entirely used in the browser.
  • Almost all libraries and toolkits available for it are for browsers.
  • It doesn’t (out of the box) provide higher level concepts like OOP.
  • Doesn’t encourage After Effects scripters to write re-usable libraries or toolkits.
  • The current implementation of JavaScript in After Effects is old and very slow.

After Effects needs a language thats more friendly to its developers and allow them to do more with less.

Python is a language that addresses all of the points made above and has seen an uprise in the post-production community. Maya, Cinema 4D, Blender, Nuke all provide native Python access. It’s an advanced scripting language that doesn’t come with the quirks and misfortunes of a language mainly geared for browsers that JavaScript does.

Project/Composition level scripting

Right now you have two choices of automation in After Effects.

  1. An external script that runs once.
  2. In individual layer properties that are executed frame by frame.

Almost everyday I feel the need of the ability to manipulate and generate elements from a global perspective on a frame by frame basis. Having to open up each individual property that has code I want to change is a serious productivity drag. I want all of the code in one place. Not chaotically scattered through a composition.

Composition Instancing

Say you have a composition that decorates some text with various layers and effects and you need to now use that composition dozens of times throughout your project with different text. So you duplicate it however many times you need and place it where needed. Now, you want to change the leading of the text in each one. Currently your only option is to individually open up each composition and make the same change over and over again.

Here’s the problem explained a different way.

If something like a Flash Symbol was introduced. You could make a template composition. And provide and way to change whats inside of it on a per-instance basis after its been duplicated.

Another idea is to be able to select which layers are to be rendered from inside an instanced composition. That way you could have a master composition with all possible instances of a “template” and then be able to control on a per instance basis whats shown.

Folders in the timeline.

This has been asked for over and over again for years. Pre-comping is usually a bad idea and the less of it the better. I just don’t like losing context in the main composition to do something trivial like apply a mask to a selection of layers in the timeline. A nodal interface would be the best solution to this particular problem but I know that Adobe would never implement it, so I won’t argue that point. Here’s an idea I came up with pretty quickly, so it certainly could be improved.

More useful and consistent info panel

Dragging a layer in the timeline shows changes as:

Dragging a keyframe only shows this:

Why is the delta only shown for a layer? Both cases should show it.

And why is it limited to 3 lines of output?

Built-in opacity, blend mode and masks for all effects

Sometimes I find myself duplicating an effect onto a new layer with a mask or a different blend mode just to be able to achieve this functionality. Why can’t Adobe just add something like a composite section to each effect by default?

Multiple projects open at the same time

How many times have you just needed to copy and paste something from one project to a different one? Take a hint from Cinema 4d on this one.

Ability to separate dimensions on all 2d/3d properties

Why can only a layer’s position property be separated? Why can’t we separate things like point of interest (which is of the same exact type of property as position, ThreeD_SPATIAL ), orientation, or any other 2d/3d property?

Ability to move layers in the timeline without moving its keyframes

You’ll notice that as you select keyframes of a layer, it also selects the parent layer of the keyframes. Many times I’ve need the ability to move just the and then just the keyframes on another layer.

Useful expression function are not available to scripts

You can’t use expression functions in a script. It makes sense why loopOut wouldn’t be available, but why isn’t toWorld or fromComp?

Native move keyframe scripting function

It’s a difficult and very, very slow process to move keyframes via scripting. Right now you have to copy the keyframe data which is embedded in it’s parent property (which in itself is complicated enough). Then delete the keyframe. Now make a new keyframe with the new time you want and use the copied data earlier to recreate it. This can be tricky too, because the method used to create keyframes depends on a supplied keyframe index value, which isn’t easy to find out before the keyframe has already been made.  Far, far too complicated for such a simple common task. And about 100 times slower than doing the exact same operation manually in the timeline.

Modify path points with expressions

This would be very useful for making animated graphs within a shape layer for instance.

More configuration options

An option to turn off Global Performance Cache. A lot of the time I find myself purging cache because GPC doesn’t always update old frames.

An option to turn off expression dialog warnings. Sometimes you’re writing an expression and you need to do something else before you finish it. For instance, twirling down another layer’s property so you can pick whip it. If you move out of a uncompleted or invalid expression textarea you get this annoying dialog every single time.

Consistency with camera layers and expression control “effects”

You can’t add expression controls to camera layers. This would be useful for tidying up camera rigs that require an extra null layer to stuff expression controls on. It also strikes me odd that the expression controls are in the Effects & Presets pane in the first place.  How can it be considered an effect?

Suggestion Form

This entire post wouldn’t exist if there was a central place to see all current suggestions submitted to Adobe. I might be able to understand why they wouldn’t want this if they had fierce competition with another program, but since they are the only player in the game when it comes to motion graphics, it doesn’t make much sense.

Adobe should make the suggestion form more of a community effort where people can see what other people have already suggested and vote up the best ideas. For example, say someone has this brilliant idea everyone would love and want more than any other feature. But using the current form, only that person and the person reading the incoming suggestions at Adobe would know about it. And then when they tally up how many requests each suggestion they’ve received has, this particular idea would come in with only one request and probably appear undesirable by the AE community as whole and most likely not be high on the implementation list. A forum with a voting system (like this) would solve this issue and should not take long to implement either.

So the reason why I’m posting these ideas on my blog is to hopefully get more people aware of possible features that they might not have considered themselves. Since what the current system seems to honor is quantity.

You can find the current suggestion form here.

Add Incremental Save For Crash File Name

Give an option to increment the current file name during a crash instead of appending “_1″ to the end. You end up with a lot of this:

And I just end up renaming them incrementally anyways.

Expose more properties to be modified by expressions

For instance, it would be nice to access things like the number of characters and lines for text layers. It’s currently very random what’s exposed.

Smaller, but worth noting

Make Grow Bounds work on all types of layers. Like RGS Grow Bounds.

Make Set Matte more robust. Currently it only works if layers are 2d and the same size ratio. There should be an option to apply its mask based on what the active or a selected camera sees.

Layer like features for masks, ala visibility toggle and in and out points. Instead of having to drag the entire mask off screen when its not needed anymore.

Effect inputs have a max value of 32767. The rest of AE allows you values up to 1.1000000e+200. Input values should be consistent across AE.

To relatively change keyframe values in the timeline without using the value dialog, you have to have the scrubber directly one one of the keyframes your trying to change. Add a modifier key to do the same thing no matter where the scrubber is at.

The project panel doesn’t expand columns to show the length of long values. Mainly file path.

  • Ian Haigh

    Hey Michael, really great list … I particularly agree with the scripting/expression language, composition instancing, and timeline folders. And I’m flattered that Ease & Wizz is the example of a bad UI :)

    Cheers, Ian

    p.s. I’m looking forward to Rift! Sortie is GREAT

    • michael

      Haha. Thanks Ian. That of course wasn’t the intention, I just needed something people could relate with. Glad you like Sortie. Rift will be out soon.

  • ludwig

    i totally agree with you.

    my very first thing on a list would be to open a layersource directly out of the timeline.

    its annoying to reveal a file in the project, then to reveal it in finder and then to open it out of the finder.

    it couldnt be that hard to implement “open source” and for example photoshop opens the requested file…..

    • Will Summers

      This actually exists already but it’s somewhat of a hidden shortcut.

      Press Command-E
      with the layer selected in the timeline.

      • michael

        Which point are you trying to answer? I don’t see how Command-E solves anything that I mentioned.

        • michael

          Oops. In WordPress it didn’t show that this was a reply to a comment instead of my post itself.

  • Austin Wallender

    Nicely put. I can’t imagine them ever moving to python, but it would be nice. I think incremental updates (set matte actually being useful, separating all dimensions, possibly folders) are possible, but the code base and UI metaphors are super old, and it’s already been rewritten so many times (PPC/Intel, 32/64 bit) that I can’t imagine them putting in the effort and resources to implement a lot of these changes. So few AE folks even USE scripts, much less write them. Lets keep in perspective that we just got per-vertex feathering, and still don’t have scopes.

    • michael

      I was stoked when I saw per-vertex feathering was added, most useful thing new in CS6. I think they’ll have to upgrade the UI at some point. Ha, CS8? So if they do, they could solve a lot of problems by moving to Python and opening up the API to the entire program. Then third party developers could write their own scopes if Adobe never got around to doing it themselves.

  • Todd Kopriva

    > “Then third party developers could write their own scopes if Adobe never got around to doing it themselves.”

    I don’t understand this comment, since there are already several third-party scopes plug-ins for After Effects, including one that’s bundled with After Effects.

    • michael

      I just demoed Test Gear and your right. Didn’t know that was possible to make custom third party panels. That’s great. I’m must of missed the “Panelator” example when I was browsing through the SDK. Are you referring to Color Finesse as the one bundled with AE? Because it opens its own interface separate from AE’s, which I’m not a proponent of. I don’t like it when something opens up over AE and takes me away from what I’m working on. But Test Gear does it right. Would be nice if it was native of course.


  • Alex White

    About “Composition Instancing”.
    You can parent your text layer to composition name.

    • michael

      Not 100% sure what you mean. Theres currently no way to have one “master template” and then change the contents of that master templates instances without duplicating the master template. It’s all manual.

      • Alex White

        Yep, there is no template function, but if you`ll parent your text layer to composition name, and changing composition name will affect text layer too.