The Foundry's Nuke 7 in Review

Product Review: - Nuke 7

Nuke is a node-based 2D and 3D digital
compositor. It's market typically caters to feature films and
broadcast media, but you could really use it for anything involving
pixels. It's the visual mixing board used to assemble, tweak and
refine footage for the next blockbuster film or baysplosion. If you
have footage of a suspension bridge, snow flakes, three actors
running for their lives, a fighter jet and a zombie hungry for
brains - and you need them to be in the same coherent shot - you
use Nuke. After you're done filming with yourRED camera - you use
Nuke (Anyone want to send me a REDsomething-or-other for
Christmas?).

There are two versions of Nuke: Nuke and NukeX. The latter offers
everything that Nuke offers, plus several additional goodies. Those
goodies include an integrated 3D camera tracker, a robust 3D
particle system, a planar tracker for things like replacing signs
and other garbage and a denoise node that can take footage that
reminds you of a tweed jacket and turn it into something decent,
while still not loosing too much detail. NukeX also provides GPU
acceleration on several nodes when using compatible hardware.

This review will be my first Nuke/NukeX review. While I've used
several node-based compositors, I'd never before used Nuke. As a
result, many of the things described in this review may not pertain
exclusively to the much anticipated version 7, but rather to Nuke in general - it's
all new to me.

Little Things

Using Nuke is nice in ways you don't expect. It's designed in
such a way that every tool, every tab, every attribute feels like
it's exactly where it's supposed to be. (And if it's not, you can
customize it!) The UI is built on top Qt and you can add your own
custom UI elements via python.

Nuke is multi-threaded. Even while computing enormous frames the
UI is still very responsive. You can push a lot of data
through Nuke before things start to slow down.

Nuke features some pretty tight command line and scripting
integration as well. In fact, I would be surprised if the linux
version didn't ship with a man-page. What programming language do
you use to interact with this beautiful beast, you ask (you
don't have to be a programmer to use Nuke! I just liked
the programmer niceties)?

(click for full-size image)

Python 2.6 - of course! This is convenient as it's the same
version of python implemented in Maya. Pretty much anything you can
do in the UI, you can do with a Python script. Python is tightly
integrated with Nuke and the nukepython module is well documented.
Nuke uses Python like Maya uses MEL, but less hacky. The
implementation appears to be very clean and pythonic too, not the
un-pythonic kludge we got with Maya's python implementation.
(Before the birth of pymel. I'm still bitter.) There's a few
modules already in Nuke's root namespace, notably the nuke
module:

nuke.nodes.Blur(size=10)

Bickety bam! I just created a blur node via python. While most
programmers use an external editor to do any real scripting the
built in script editor is decent and has all the neat goodies, like
tab auto-completion. I was also glad to see the official docs on
the Foundry website using the Sphinx documentation generator. This
is cool because it's the same doc generator as used for the
official cPython docs. That, and Sphinx makes very slick looking
documentation. There's tons of code examples and tutorials,
etc.

While Nuke has more than a few complexities under the hood, it's
fairly simple to get started. For anyone who has any experience
compositing, it doesn't take long to feel right at home. You don't
have to look for things inNuke, they tend to find you. Press Tab
and type 'blur' - bam! A blur node at your
disposal. In this way it reminded me much of Houdini from SideFX
Software. The pop-up tool tips are also very descriptive of nodes
and their attributes. Nuke seems fully capable of just about any
project you throw at it, as evident from some of its users: ILM,
WetaDigital, Framestore, SPI, Dreamworks, DigitalDomain...

Nuke is complex. Nuke is also simple. It doesn't scare you away.
Even before I read the getting started guide, I dove right in. Nuke
was intuitive enough to easily guess many keyboard shortcuts as
well as where nodes were and how to wire them up. Without reading a
thing, I created several basic composites. After reading the
getting started guide, many of the other hidden other niceties
revealed themselves; Hidden virtual sliders and other interesting
ways to edit node properties, bookmark node locations in the node
graph, and re-route the wires that connect nodes together with
'elbows'. These elbows, now common in other programs, keep your
node graph from looking like spaghetti.

Like many other compositors, the Nuke file format is plain text.
Nuke saves 'scripts' of how to reconstruct the scene - not pixels.
(Until you render your script.) This makes it trivial to
incorporate other scripting tools into the pipeline. For instance
you could write some Python to edit, process, even generating Nuke
files. I expected this from my experience with several other high
end compositors but when I copied nodes via ctrl+c from the Nuke UI
and pasted them into my text editor - I smiled; The result was the
script that created the copied nodes, along with all their
attributes. You can literally copy nodes back and forth between a
plain text editor and the Nuke node graph - Very cool for anyone
writing code.

I especially like the property editor and how it displays a
stack of previously edited nodes. This makes switching between
editing two or more nodes trivial. All the attributes are at your
fingertips. This is a feature I wish we had in other compositors
and especially in Autodesk Maya.

Nuke is laden with all kinds of little niceties often missing
from other software. Want to use HTML in a node's label? Nuke can
do that. Throw in all the bolds, underlines, headers, lists... Nuke
will render them as the node label in the node graph. Most software
only lets you rename a node, not define an entire web-page for it
(not that you need to, but the fact is - you can).

The resulting node tile. Poor fictitious Scott:

Some Slick New Features

Alright, enough random cool things I love about Nuke. Time for
some new stuff. This is a tiny fraction of what is new.
Unfortunately, I don't have space to cover even half the cool stuff
in this release. This review would become a book.

Nuke 7 is coming out and it boasts
some cool new features, especially RAM Caching. Nuke
caches computed frames in memory so that once all frames are cached
you can have real-time playback. See the little green goobers along
the timeline? Those represent ram cached frames I can scrub (or
play) in real time. It worked pretty much as advertised:

Like most compositors, Nuke eats memory for breakfast. The
system requirements specify 1 gig minimum. I had a 16 gigs on the
test machine. It was adequate for most composites but I'd feel a
lot better with 32 gigs or more. Most of the memory is
used for the ram-backed frame caching. If you're working with
16-bit per pixel, 2k uncompressed plates - at 29 frames per second
(or more) - you're asking a lot of your hardware.

(click for full-size image)

Memory is cheap these days and with the, now ubiquitous, 64-bit
hardware you can never have too much. Very few compositors will be
entirely real-time but it's safe to say that more memory =
bigger cache = better performance. For non-cached frames,
Nuke's performance was on par with other compositors I've used. It
becomes dependent on access speed of the underlying disk or network
and the CPU juice needed to compute a given frame.

Speaking of which, there's several nodes in Nuke's bigger
brother, NukeX, that can make use of GPU acceleration on
compatible (CUDA 4.0) graphics cards, including Nvidia's Quadro
lineup. Just like the tools in my Adobe Photoshop CS6 review, only nodes
specifically written to take advantage of this speedup will notice
any performance improvement. In NukeX this includes MotionBlur,
Kronos, Denoise, VectorGenerator, Convolve and ZDefocus. You can
toggle the GPU acceleration on/off per node in the property editor
as shown below:

If you don't have a compatible graphics card, NukeX reverts back
to CPU only mode. After using it I can confirm the performance
improvement was significant on the test card I used. (Nvidia Quadro
5000 - kindly provided by Nvidia.) I went from waiting 3-4 seconds
for a denoise node to update after adjusting the denoise property,
on a 16-bit 4k plate, to being able to drag the slider
interactively. I hope to see even more GPU accelerated nodes in
future versions.

Other Things

Nuke is pretty adamant about crash recovery and background
auto-saves. You can configure this in the options via Edit ->
Preferences. By default it auto-saves every 5 seconds if the
program is idle and every 30 seconds otherwise. Loosing data in
Nuke due to a crash, (either Nuke itself, operating system or
otherwise) is difficult.

The only thing I could find to complain about was the price. A
copy of Nukeor NukeX will set you back $4,900 - $8,000
respectively. You can try it for free and there's also a student
version but this price sounds hard to swallow when you consider
Autodesk's Toxic compositor comes bundled with the Maya and 3dsmax
suite, and SideFX software's Houdini comes with Halo fully
integrated for $2k or $4,500 if you want physics. Eyeon Fusion is
also tempting and at a much lower price point. (I haven't used
Fusion in years, so I can't comment much on it.) Why the
discrepancy?

Nuke and especially NukeX is a much more feature-rich
compositor than anything I've used. By feature rich I mean
extendible. Nuke is very open to developers, scripters and
technical directors. It embraces plain text file formats, Python,
Qt, FBX, openFX and openEXR with a bazillion channels/passes per
file. The limiting resolution per file is a 64k square.
Huge.

As an unfair comparison, Nuke makes Toxic feel like a toy. Like,
that free one drawn on the back of the cereal box you have to cut
out. Not exactly a quantitative analysis but that's the general
feeling I got after using them both.

When you really think of it like a professional tool, the price
becomes easier to swallow. I know photographers who spend more on
cameras and lenses to shoot weddings. With Nuke you're often
working on feature films and unless you're a freelance
artist, your employer will foot the bill. (How I wish I
could keep my evaluation copy lol.)

The only other thing I didn't care for, was the fact that Nuke's
python documentation didn't use Pygments. For those not familiar
it, Pygments is a python module that allows code examples to be
syntax highlighted in sphinx-generated documentation. A truly
chicken-shit complaint.

Bottom line: I really loved Nuke and its bigger brother NukeX.
This review is too long already and could be 10 times longer just
listing each neat little thing I liked. They are truly excellent,
excellent pieces of software. Trying to find things I
didn't like to balance this review was difficult. I wish I
had more time to spend with it.

All supporting images are copyright, and
cannot be
copied, printed, or reproduced in any manner without written
permission

Kurt Foster (Modulok) falls somewhere between
programmer and visual effects artist. When not sifting through
technical manuals, he takes on freelance roles in both programming
and visual effects, attempting to create a marriage of technical
knowledge with artistic talent. He can be seen helping out on the
Renderosity Maya forum, when time permits.

January 21, 2013

Please note: If you find the color of the text hard to read,
please click on "Printer-friendly" and black text will
appear on a white background.