18 July 2010
Whats your background?
I studied Computer Science at MIT, then worked on Personal Computer software for a few years. Then I went to the USC film school, where I first worked on production design, which is something I felt I was able and wanted to do, but soon was doing animation.
How did you find yourself at DD?
After film school I started seriously pursuing jobs in special effects, but first I worked at Sun Microsystems, then at a small place called Sidley Wright MotionWorks, with Steve Wright who is now doing Nuke instruction. Sidley Wright used a few of the remaining Pixar Image computers, which had larger dynamic range (-.5 to 1.5) and this and some of the terms used by Pixar influenced Nuke's design. A friend from USC asked if I had sent a resume to Digital Domain, and this is the first I heard of it. I did send one and they did want to talk to me. This was when they were starting up and they were hiring everybody, which is where the pirate emblem came from.
What did you do at DD pre Nuke?
My first project was an animation curve editor, some portions of this still remain in the curve editor in Nuke today. I also worked on movie clip playback and on a dedicated color-corrector to translate Cineon images to 8 bit, this is what led me to concentrate on images rather than 3-D.
Why did you start to write Nuke?
I started writing tools for working with the first version of Nuke, which was command-line based. This was intended to be script-generating programs for it but the first useful thing was "Nukalizer" which read a script and drew a tree showing the data flow, artists used this and it was soon improved so the user could alter the tree. But I was not successful in getting it to output a working script that was efficient, and started to realize it would be easier to make this program do image processing than to output a script.
Who's idea was it to write it?
I probably got a lot of encouragement from Price Pethel.
Did you get lots of artist input?
Yes as soon as it was usable I got lots of feedback and a lot of constructive ideas.
When was this?
The GUI Nuke was actually used on a few final shots for True Lies.
What were DD using before Nuke?
Flame. In fact initially Nuke's main use was to run 2K versions of the video Flame composites, we had a really good flame2nuke converter program, though it eventually broke because Flame kept changing their file format. If I remember right switching the flames to 2K required reformatting the disks, so they wanted to avoid this as much as possible.
Was it always called Nuke?
As far as I know. It was named by Phil Beffrey, who created the first version, for "New Compositor" and also as a joke on the Flame/Inferno style of naming. Quite a lot of Nuke one remains in Nuke, including a lot of terms about channels and bounding boxes and how clipping behaves. Phil went on to Pixar and is still there today.
Was there a spec? What did version 1 do?
I don't think either me or Phil worked off any spec. We had a general idea what was needed and tried to address it. Version one used fixed-sized buffers and a command line. But it could do transforms and blur and sharpen filters and color corrections, and composites.
Did it always have GUI?
The GUI was introduced in version 2.
What were you to FLTK who else uses FLTK?
Nuke 2 used Mark Overmars' Forms library, written for Irix GL. I had to rewrite this to use OpenGL and at the same time this was happening Linux started to be used and we realized that OpenGL was much too slow to use as the main interface (pretty much the opposite as today!) so the toolkit had to be rewritten to use X for all the non-3D parts. Since this was changing everything anyway, I thought changing the api to C++ and making widgets that matched our actual usage would be a good idea, and this is where FLTK came from.
Wook, who was managing software at that time, gave me permission to release FLTK as open source, and it was therefore available just as open source took off. Open source was a big win, in particular we got, for free, a port to Windows.
I think FLTK was used quite a bit in engineering and special effects companies, though it's usage has mostly been replaced with Qt today. FLTK may have been much more popular, I was actually contacted by Richard Stallman to see if I wanted to transfer it to the FSF, possibly it would have been used instead of GTK in that case. However I was a bit swamped with other work and probably missed this opportunity.
Are you still involved in FLTK?
I am following what is going on, but I have to admit that all current work is using Qt, both in Nuke and in the work I am doing now. FLTK may have been hurt considerably by forking (into FLTK1 and FLTK2). Until The Foundry rewrote it to use Qt Nuke was using FLTK 2.
Was Nuke always scanline based, ahead of it's time?
I think some of Phil's operators were written to work on one line at a time. The GUI version always used scanlines. This seemed to me to be necessary to get an image through the huge number of steps artists wanted, with the limited memory we had at the time.
Was it always floating point?
Initially all the operators could output 8, 16, or floating-point versions, and could chose the type of data they wanted input. It quickly became clear that all the operators were only implementing the floating-point version, so in Nuke 3 data other than float was deleted.
When did it get 3d?
The only "3D" Nuke 2 could do was a "card" operator which took a camera position and the location of a rectangle in 3D space, and produced the correct 4x4 transformation to map the input image to that rectangle in front of the camera. So basically the only thing that could be rendered is a single flat texture-mapped rectangle. If you wanted to render two rectangles you needed two of these operators, and if you wanted the same camera for both you had to clone the "camera" operator. Despite this limitation, some artists managed to construct quite large virtual sets out of these rectangles, taking a lot of operators, this was used several times in Titanic.
Jonathan was one of these and I'm sure his frustration with constructing such huge scripts led him to get to work on the 3D system that is in modern Nuke. When working on the rewrite for Nuke 3 I actually thought all that was needed would be to improve this operator to output a Z channel, add a Z compositing operator, and add something so the "camera" could be shared. True 3D is really Jon's input.
Is there a node/concept you are particularly proud of?
I like the fact that file input, output, and the viewer are all node.
What would you like to see in Nuke?
I believe they [The Foundry] are going to have to greatly increase the use of 3D and hardware acceleration, even though I know this will require extensive rewrites. I feel Nuke could expand into the do-everything program that everybody is aiming for.
Are you surprised how popular it is now?
Quite a bit. I knew the Foundry would do a great job selling it, but I thought after the initial year they would have the market they were going to get. All these site licenses now certainly are good news for everybody.
Any plans to write any plug ins?
I am thinking about it but have not made anything presentable yet.
What are you doing now?
I am working on in-house software at Rhythm & Hues, having taken their recruitment bait. I have to say it is quite interesting, and I think maybe a chance to try different approaches to everything.