Faster! Control the Render Pipeline
The render pipeline is the order in which operations happen; by controlling it, you can solve problems and overcome bottlenecks. For the most part render order is plainly displayed in the timeline and follows consistent rules:
- 2D layers are calculated from the bottom to the top of the layer stack—the numbered layers in the timeline.
- Layer properties (masks, effects, transforms, paint, and type) are calculated in strict top-to-bottom order (twirl down the layer to see it).
- 3D layers are instead calculated based on distance from the camera; coplanar 3D layers respect stacking order and should behave like 2D layers relative to one another.
So to review: In a 2D composition, After Effects starts at the bottom layer and calculates any adjustments to it in the order that properties are shown, top to bottom. Then, it calculates adjustments to the layer above it, composites the two of them together, and moves up the stack in this manner (Figure 4.13).
Figure 4.13 2D layers render starting with the bottom layer, rendering and compositing each layer above in order. Layer properties render in the order shown when twirled down; there is no direct way to change the order of these categories.
Although effects within a given layer generally calculate prior to transforms (except in the case of continuously rasterized vector layers), an adjustment layer above a layer guarantees that its effects are rendered after the transforms of all layers below it.
Track mattes and blending modes are applied last, after all other layer properties (masks, effects, and transforms) have been calculated, and after their own mask, effect, and transform data are applied. Therefore, you don't generally need to pre-render a track matte simply because you've added masks and effects to it.
Have you heard of a "real-time" compositing system? No such thing actually exists. The ones that claim to be real-time cleverly pre-render and cache elements so that they don't have to be recalculated as each frame is displayed. You can do this in After Effects, too—you're just left more to your own devices to set it up.
As I work, I try to organize any portions of my master comp that I consider finished into a subcomp, and if it is render-intensive, I pre-render it. Failure to commit to decisions—keeping options open—costs time and efficiency. It's as true in After Effects as it is in life as a whole. Pre-rendering a subcomp does, however, lead to another decision about how it behaves after you render it.
Tucked away in the Render Queue panel, but easily visible if you twirl down the arrow next to Output Module, is a menu of three post-render actions. After the render is complete, you can use
- Import to simply bring the result back into the project
- Import & Replace Usage to replace the usage of the source comp in the project without blowing it away
- Set Proxy to add a proxy to the source (the most elegant solution, but the most high-maintenance)
The latter two options even let you use the pick whip icon adjacent to the menu to connect whatever item in the Project panel needs replacement. If you've already created a pre-render or proxy, you can target that (Figure 4.14).
Figure 4.14 Virtually any project item can be the target for replacement or a proxy; click and drag the pick whip icon to choose the item to be replaced by the render.
Proxies and Pre-Renders
Any image or clip in your Project panel can be set with a proxy, which is an imported image or sequence that stands in for that item. Its pixel dimensions, color space, compression, and even length can differ from the item it replaces. For example, you can use a low-resolution, JPEG-compressed still image to stand in for a full-resolution moving-image background.
To create a proxy, context-click an item in the Project panel and choose Create Proxy > Movie (or Still). A render queue item is created and automatically renders at Draft quality and half-resolution; the Output Module settings create a video file with alpha, so that transparency is preserved and Post-Render Action uses the Set Proxy setting.
Figure 4.15 shows how a proxy appears in the Project panel. Although the scale of the proxy differs from that of the source item, transform settings within the comps that use this item remain consistent with those of the source item so that it can be swapped in for the final at any time. This is what proxies were designed to do, to allow a low-resolution file to stand in, temporarily and nondestructively, for the high-resolution final.
Figure 4.15 The black square icon to the left of an item in the Project panel indicates that a proxy is enabled; a hollow square indicates that a proxy is assigned but not currently active. Both items are listed atop the Project panel, the active one in bold.
There's another use for proxies. Instead of creating low-res temp versions, you can generate final quality pre-rendered elements. With a composition selected, choose Composition > Pre-render and change the settings to Best quality, full resolution, making certain that Import and Replace Usage is set for Output Module. If, for example, you've completed the greenscreen key on a source, pre-render it so that you don't waste time continuing to redo a decision that is already finalized.
By default, the source file or composition is used to render unless specifically set otherwise in Render Settings > Proxy Use. Choosing Use Comp Proxies Only, Use All Proxies, or Current Settings options (Figure 4.16) allows proxies to be used in the final render. To remove them from a project, select items with proxies, context-click (or go to the File menu), and choose Set Proxy > None.
Figure 4.16 I typically set Proxy Use to Current Settings, but Use Comp Proxies Only lets you set low-res stand-ins for footage and full-res pre-renders for comps, saving gobs of time.
Rendering from the render queue ties up the application and most of the machine's processing power for as long as is needed to output footage. On a modern system with multiple processors, you can do much better than that.
Background rendering allows a render to occur without the user interface, allowing you to continue working with it. The aerender application is found alongside the After Effects CS5 application itself on your system but runs via the command line (in Terminal Unix shell on a Mac, or the DOS shell in Windows). You can drag it into the shell window to run it, or press Enter (Return) to reveal its Unix manual pages (if you're into that sort of thing). Shown are its arguments, the variables that can be added in quotes to the command aerender, and the location string of the project file.
But that's all such geeky gobbledygook when there's a panel to do it, thanks to the BG Render script, which is so good I almost never use the render queue anymore.
The aerender command is also used by third-party rendering solutions that go beyond what BG Render can do by distributing your render across multiple machines on a network. These programs run scripts that manage the process of running aerender on multiple machines and are capable of far more than just straight-ahead renders; you can, for example, have a render wait until a certain time or until another one completes before commencing, and you can automatically re-queue renders that fail for any reason. All of the third-party rendering options—Rush Render Queue, Qube!, Smedge, Muster—also support other terminal-friendly applications such as Maya and Nuke.
Be forewarned, however, that at this stage there is nothing like a one-button install for this type of software. Because of the need to coordinate resources across a network and make machines recognize one another and all file locations, a system administrator or equivalent technical expert is needed before those are up and running. However, if your facility is large enough to have dozens or hundreds of CPUs, it's worth the investment to implement and maintain such a system.
There is increasing interest these days in letting someone else manage a render network remotely and permit what is known as remote or "cloud" rendering, where you upload your source files and rendered output is returned to you. This makes plenty of sense for 3D animations, which often have small source files but require a lot of processing power. Big comps, however, usually have too much source data to make it worthwhile to even contemplate uploading it all. Plenty of smart people are working on improving this method, and once gigabit connections to the Internet are widely available, this approach is bound to take off.
The myopic and slightly dotty granddaddy of network rendering on After Effects is Watch Folder. File > Watch Folder looks in a given folder for projects ready to be rendered; these are set up using the Collect Files option. The Adobe help topic "Network rendering with watch folders and render engines" page includes everything you need to know.
Watch Folder is OK on small, intimate networks, but it requires much more hands-on effort than dedicated render management software. With individual systems having become so powerful, it's easy to become lazy about taking the trouble required to set up a Watch Folder render, but if you're up against a deadline, don't have the dedicated software, and want to maximize multiple machines, it will do the trick.
Adobe Media Encoder
Delivering to the web or a DVD? Adobe Media Encoder is a dedicated render application that helps render certain video formats—including Flash video (FLV and F4V), H.264, and MPEG-2—that don't work well with the frame-by-frame rendering model of After Effects. For example, H.264 is a "long GOP" format that relies on keyframes with lots of image data surrounded by in-between frames with very little, and it requires all of the frames to be rendered before it can work its magic. Not only can Adobe Media Encoder collect frames to compress them, it can even render on multiple passes for higher quality.
Owners of Adobe Production Premium or Master Collection have the maximum render options, since Premiere Pro can dynamically link to After Effects comps and render to Adobe Media Encoder. Even if you own just After Effects CS5, Media Encoder is still included with your installation.
Instead of rendering from After Effects in an uncompressed format and then importing the result to Adobe Media Encoder, you can drag and drop an After Effects project to the application. This launches Dynamic Link, which peeks inside the project for renderable comps (Figure 4.18).
Figure 4.18 Dynamic Link allows other Adobe applications to see your Project panel; Adobe Media Encoder uses this to let you render comps for heavily compressed video formats directly from the project.
Most of the options from the After Effects Render Queue are here, albeit in a different configuration, so why go to the trouble to render this way? If you've ever tried creating an H.264, FLV, F4V, or MPEG-2 directly from After Effects, you know that it's virtually impossible to get a good-looking file at anything but the highest data rate, which defeats the purpose of using these formats. Adobe Media Encoder can hold more than one frame at a time prior to writing the output video file, and this can make all the difference with the right settings. Start with the presets and customize as needed.