web analytics
Rowbyte

The Most Important Feature of AE Next

Adobe announced all new After Effects 13.5 version with a bunch of new features, utilities and cool gizmos. It now has a Character Animator, a detailed face tracker and a bunch of other improvements. If you want to know more about it, checkout Todd's blogpost explaining them in more detail. Buried in that post, there is an important announcement, Changes to Rendering Architecture for Interactive Performance Improvements. Apparently, it improves the experience so much that there'll be no more delays or beachballs during rendering! That sounds too good to be true. So I've downloaded the beta and noticed that they added a lot of new APIs and made significant changes to their rendering architecture. So I guess, 3rd party developers need to re-engineer their ground breaking & sometimes patented plug-ins to take advantage of the new APIs to really provide seamless user experience. Right? Well true, but not really. It interacts faster even if the plug-ins don't use any new APIs. I can write all the technical minutiae and bore you to death, but instead I'll explain it using a simple example.

Revenge of the Nulls - Plexus has had a great feature since v2.0 i.e., the ability to track Nulls in the composition and create Plexus structures and particles using 3D Nulls in the composition. So, you can track whatever you want in a 3D tracker, export to Nulls and use them Plexus. Neat! But, there is a catch. There is no proper way to track Nulls objects using the After Effects API. Yes, you can get it's properties but AE doesn't let the plug-in know whenever the Null object moves or changes color, unlike say 3D lights. But, users love the utility of Null objects and it's not always easy to convert them to lights. So I had come up with a big hack to make it work - expressions. That's right, when you use Nulls in the composition to create Plexus structures, there is an ugly expression that is being evaluated whenever you try to interact with the composition, so it bogs down performance quite significantly.

Now, there are new APIs in 13.5 that'll address this issue properly, but even without re-engineering anything, the new version of AE solves this issue quite brilliantly. See the video below.

The first one, using 13.2 is quite slow to interact with where as the second one in 13.5 is very snappy. In fact, butter smooth. So how is this possible without making a single change to the code in the plug-in? Simple - AE now no longer waits for ANYTHING. Plug-in taking too long to render while scrubbing? Expressions bogging down while moving the Camera? Too bad, it just has to wait until the user is done interacting with AE. Now back to the Nulls. In 13.2 the ugly expression is being evaluated almost every time you move the Camera, so if you have more than 20 Nulls, it really slows down the interactive performance of AE. But, in 13.5 it is evaluated only once after you're done moving the camera around. Hence, you get buttery smooth interactivity even if a plug-in/expression takes a while to execute. But why is this possible in 13.5? Why didn't AE do something like this before?

To explain it, you need to understand a little bit about the new threading architecture. Prior to 13.5, all the UI handling and rendering was done in the main thread (Modern CPUs can process multiple threads at the same time in parallel, but many tasks are still are performed on a single main thread). So when you move the Camera, AE responds to the user, evaluates the expression,renders the composition and all in sequence on the Main thread. So if there is any bottle neck in any of the above steps, the entire interactive performance of AE slows down. In 13.5, only the UI is handled on the Main thread, while the rendering etc., are done in the background. So when a user moves the Camera, the expressions are evaluated on a separate thread in the background and each plug-in is executed in the background on a separate thread. Normally, all of them can be executed in parallel and even if one thread takes longer to process, the entire application and other threads can move on to do other things. So you can get incredible interactive performance, which can be a god send if you have multiple layers of heavy duty 3D plug-ins like Plexus.

Well, that's why I think this is the most important version of AE in recent times.