Wednesday, March 17, 2010

Decomposing node-based software

There is an idea prevalent among compositors, supervisors, and job recruiters that there is a huge difference between so called "node-based" compositing software, such as Nuke and Shake and so called "layer-based" software such as After Effects. One sees this division in job ads requiring “node based compositing experience” and hears it when artists or supervisors decry the challenge of moving from one application to another. The reality is that the differences between “node-based” and “layer-based” are largely cosmetic. The difference lies more in how the software helps the artist visualize the compositing task and has little to do with work flows. In fact, the difference is mostly intellectual and not at all based on how the application operates: After Effects is as much node based as Nuke.



Nuke's node diagram

While there are two categories of compositing software, the categorical difference has nothing to do with nodes. These two types of applications are the “dual layer/multi-pass” type and the “multi-layer/single pass” type, sometimes referred to as “horizontal compositing” and “vertical compositing”. Most popular compositing software in use today relies on the multi-layer/single pass model; all such systems are node based whether the user interface displays this or not.


To clarify the categorical difference, which will bring us back to node-based compositing , let’s look at the evolution of these two compositing application types.

Early digital image compositing software with a user interface more complex than a text editor tended to work at video resolution and tended to allow operations on a single layer or image clip. These systems relied on dedicated hardware and disks formatted for a single image resolution. Two clips could be combined using either the foreground layer’s alpha or an external key (third clip). To build a comp, the artist would modify clips one by one and then merge them one by one, rendering a new version at each step. This tedious process made changes in design a major rework. Early software based on this multi-pass approach included the Harry, Henry, Matador and Flame.

In the late 1980’s script based multi-layer/one-pass compositing got a GUI and the door was opened to expand digital film compositing.

What the programmers did was a clever thing. Instead of forcing the artist to work one layer at a time on an entire clip, the software allowed the artist to see all layers one frame at a time, or render to view the entire finished comp. This vertical work flow allowed the artist to see an entire stack of operations, an entire comp or any portion of it and make changes at any level. The impact of this change in paradigm was decreased design costs and increased productivity; the consequence was the expanded use of digital compositing in feature film production.

After Effects Flowchart
The programmers achieved this by moving all the separate operations that an artist could perform on a layer or combining layers into programming modules within C or C++. These modules, which came to be called nodes by some applications, were then sequenced according to the artist’s instructions automatically, passing the image data stream from module to module through a data pipeline. Because all this was internal and because improvements in computing speed, memory and storage supported this model, the horizontal way of working, multi-pass compositing, was replaced with vertical or single-pass compositing.

Pioneers of this technology included Wavefront’s Composer, Houdini’s Prisms and Softimage’s Ice. Although the three differed in user interface design cosmetics, all of these operated internally on essentially the same principles of programming and compositing.



So this leads us to the question, what is a node? Some people believe a node is the user interface to an operation. Yes, this is how a node’s parameters and controls can be displayed. However, in my mind a node is the underlying programming unit that accepts an image data stream and user parameters and returns some result. In my mind the node is not the user interface, but rather the software function that the user interface allows communication with. The node is the software expression of a compositing concept that provides both a user interface and executes user commands.

The term node comes from UNIX data pipelines, which are programs that take data, apply user instructions, and output data. In compositing, the nodes are strung together in a script; this script contains all the instructions needed by the render engine. Whether the user sees these nodes in the user interface as a node tree or as layers with effects is irrelevant; the script directs the flow of image data streams through processing nodes to achieve a final result.



Most popular compositing software today use the multi-layer one-pass approach, which as we see uses a node based processing pipeline internally. While at this fundamental level compositing software is the same, applications do differ in how these nodes are processed internally and how the user interacts with these nodes. Some software, for example, has been optimized to concatenate color and matrix operations when possible to achieve better quality and improve efficiency. Vendors differentiate their products also with innovative user interfaces and innovative tools.
Some software communicates with the user by displaying the internal node structure and data flow as a node tree diagram. Among the applications that have done this are Composer, Eddie, Prisms, Ice, Fusion, Shake and Nuke. After Effects, which uses a user interface paradigm similar to Photoshop, also allows users to work in a node diagram.



As we have seen the distinction between so called node-based and layer-based software is intellectual –under the hood both execute a script of commands, these commands describe a data pipeline of operations, and the individual operations are nodes. Understanding the essential paradigm of multi-layer one-pass compositing will help artists migrate gracefully between applications take advantage of real differences in features and operation and to find more job opportunities.
Reblog this post [with Zemanta]

0 comments:

Post a Comment