The Foundry's Nuke 7 in Review

Kurt Foster [Modulok] - Staff Columnist

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)?

'Welcome to Python 2.6!'
(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.

'Welcome to Python 2.6!'

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).

'Welcome to Python 2.6!'

The resulting node tile. Poor fictitious Scott:

'Welcome to Python 2.6!'

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:

'Welcome to Python 2.6!'

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.

'Welcome to Python 2.6!'
(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:

'Welcome to Python 2.6!'

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.

You can check out Nuke and NukeX and download a free 15-day evaluation copy here: http://www.thefoundry.co.uk/products/nuke/

Quick Links:


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.