(CO-WRITTEN BY JACK BINKS)
What did you do before Geo tools?
I'm really all over the place. The last two years I've been working with a lot of artists building either animations or custom electronics for a variety of gallery shows. Sometimes (but rarely) I'm even given my own; the last of which was a series of tiny sculptures and a large boxing ring where I fought the amazing painter Ulrich Wulff.
Where are you currently located/working?
Currently I'm sitting in the DMV renewing my driving license before heading back to Berlin wheres been home for the last two years. I've been switching between there and New York since about 2001. Thinking of moving to London though; as it consistently blows my mind. This summer I actually got to drive over there..such an insane mixture of fear and confusion. I must do it again. And I have to say, the DMV is turning out to be a perfect mixture of bureaucracy: just enough to make you laugh, not enough to make you cry.
Geometry Tools is an impressive toolset, can you tell us how long did it take?
Thanks! I just looked at the repository and seems it began in October 2011, as the PolyText node. Curves are the most recent which I started October this year. Not that I haven't spent a lot of time on the development; but there were many -totally- unrelated projects between then and now. I'm also a bit of a perfectionist and never really know how to let it be. It's a bit of a problem. I tend to develop for a specific use but also with some intentions of a wider release; and I'm constantly thinking I've got to squash all bugs, or if I just add this one thing it'll be really amazing super useful.
Is this your first stab at writing Nuke tools? How long have you been building tools for Nuke?
I was actually contracted to write a particle-system for Nuke back in 2010. I did it for super cheap as part of the deal was I kept all the rights and assumed I could sell quite a few licenses afterward…With The Foundry's announcement of 6.3 including particles that model took a serious beating, but I had already done some preliminary work integrating Bullet during the development. So I promptly flew to London, threw eggs at their building for three days, took a nap, and started focusing on the dynamics. Coming from 3D I couldn't fathom particles without RBD simulation.
What would you like to see improved in Nuke?
I think the geometry system needs a bit of an overhaul; it's starting to show its age, would love to see a ForEach node like in Houdini, and am pretty convinced the Luxology merger will bring a new renderer which will be a wonderful addition. I'd also like the price to come down a bit. I work at a lot of smaller studios and Nuke can be a bit out of reach for them and then I’m [sadly] back in AE land. I always thought adding some focus into motion-graphics would be smart, possibly allowing them to sell more licenses and hopeful a way to bring the price down.
How did you find getting started with the NDK? Was there much involved with getting set up with compilers, build systems, etc? What do you use for these?
The development forum is phenomenal for getting questions answered. Documentation until 6.3 left something to be desired for sure, but they really made a concerted effort to improve it. Getting set up on Linux was a bit of a chore, but it was mostly because I really need to use a more modern distribution than a lot of facilities run.
What would you like to see improved in the NDK?
I'd love to see The Foundry using more modern compilers. They've done this for 7.0 on Windows so maybe others will follow. Examples of more advanced or complicated nodes would be great, and dynamic knob creation that is easy to use: spectacular.
What do you use for source control, and would you recommend it to others getting started with writing Nuke plug-ins?
It's user preference. I used subversion for a long time, but in the life of these wound up switching to mercurial and then git. The switch to mercurial was mostly just to make moving and backing up the repository and working directory easier. The mercurial repository started ballooning in size, so I tried git and was amazed. Can't work without stashes and staging now.
How long did they take to build?
They've existed in various incarnations since at least 6.1, possibly 6.0. The dynamics were born in late 2010, geometry mid 2011.
How did you get the inspiration for the tools? Were people asking you for them, did you want them, etc?
It was mostly just to get things done easier/ more efficiently. The geometry tools were born working on a show where the 3D resources were extremely limited. I was tasked with trying to move as much out of 3D as possible, which began with the PolyText then just slowly expanded. The PolyShards for example began so we could scatter debris across the set procedurally without having to go back into 3D for subtle tweaks. Some of it was to try and get better motion-graphics capabilities into Nuke, but that was driven by my desire to abandon AE entirely.
How long have you been working with Nuke?
I had my first encounter with it at a now defunct shop in Philadelphia somewhere during the 5.x series. I was mostly doing Maya and AfterEffects then but remember being very intrigued. I think it was probably 3 or 4 years ago when I was freelancing on some 3D work when I had to learn the basics to put the pre-comps together. It was about the time I was learning Houdini and I just found it so much easier to switch between those two than anything previously.
Did you build plug-ins for any other systems first?
What’s your 3d app of choice?
Houdini by far. I've used Maya probably three times as long so I'm a bit more efficient in it, but any chance I get to work in Houdini I take.
Tell us a little bit more about the CSG boolean tools?
They're actually based on the excellent carve library (http://code.google.com/p/carve). You basically give it two pieces of geometry and it combines them in a couple of ways: intersection, subtraction, union, or difference (the inverse of an intersection). The PolyShards already existed and it seemed the best solution to do a straight-boolean node to get those features and voronoi fracturing of existing geometry.
How do you find building 3d operators inside of Nuke - what’s good and bad about the underlying system?
The architecture is great overall, but the implementation does need to be modernized. Dealing with time-dependencies can be more of a task then I feel it should be. There are some subtle nuances that you don't necessarily expect, but thats going to happen with any API.
What’s missing from Nuke’s 3d toolset currently?
Threading, instancing, OpenGL rendering: faster, nicer and to disk, would be at the top of my list.
Geometry selection tools leave something to be desired, I think coming from any 3D app you really find it cumbersome. I would have said the lack of a scale manipulator, but I'm glad thats going to be around.
Do you use the 3d attribute system for passing info about dynamics bodies, for example, to downstream nodes, or do you traverse the tree yourself?
It's a bit of a mixture between the two. the actual properties (mass, friction, etc..) are passed down the tree as attributes. When the solver collects all the geometry; however, it traverses the tree to see if the RBD object can be be created as a primitive (cube, sphere, cylinder). Solving for known geometry shapes like this is a lot faster than for convex-hull/decomposed mesh, and I really wanted the ability for a user to get going as fast as possible. Constraints can also scan their inputs when the goal type is set to pivots.
Does your 3d text tool handle text on a curve, or is that a deformation you have to apply after geo creation?
It can be done, but it's not as automatic as I'd like. You'd start with the text, hit the 'Create Axes' button. From that you have the text and each character with it's own input axis for controlling the transform. Then you'd make a curve, and add a CurveSampler as a parent to each of those axes. I have some more examples that I'm cleaning up before uploading that can demonstrate it better than words. Ideally I'd like to just have a curve piped in and maybe an offset parameter for moving it along the path.
How do you handle rebuilding UV’s and other attributes when modifying geometry - for example the csg or the voronoi sharding tools?
The user can specify the attributes they want to be interpolated. For subdivision-surfaces the default is uv, then we rebuild the normals. For booleans the default is uv's and normals. There can be issues involved in interpolation (the PolySubdivide currently only handles point-level attributes), but Nuke’s Normal node and the PolyUV node can be used to fix problems in this area. Booleans also preserve the material for the incoming objects. Voronoi sharding doesn't really modify geometry it creates the shards within a bounding box, which you can then pipe into a PolyBoolean with the object you'd like to cut up.
What significant challenges did you have to solve when building these?
Really too many to list. Getting the dynamics to work so it's an interactive experience came with a lot of issues. Having the fields test for geometry intersections while remaining responsive. Getting primitive-level materials working was something I thought was really important, but a huge headache for a couple of reasons. Finding out plural of Axis is Axes was tremendously shocking to me.
Everybody raves about the 3d spline in Flame - did you use it as reference when building your 3d spline tool. How intuitive do you find working with 3d splines inside of Nuke?
Not really…I haven't touched a Flame in a couple of years; definitely not since they introduced 3D paths. I'll try to get a closer look before delving into the text-on-a-path as I know they can do that. I'd like to rework the way points are added and removed a bit, and would really like to add grid and vertex snapping.
Does your toolkit offer tweaking of 3d geo points, by dragging around in the viewer?
Yes there's the PolyEdit node with allows tweaking of points, faces, and edges…with a soft-selection and falloff-curve too! The name certainly doesn’t suggest it, but it’ll also work on curve points.
You use the term beta when describing the tools - how do you find the stability and robustness of them right now? What\s your plans for the plug-ins?
Fearing I'll eat my foot with this response, but overall I think they're stable. At the same time they haven't been available to a wider audience before, and this will almost always expose some bugs. The plan right now is to get the documentation done, which is really important as they're a lot of subtle use cases that can't be deduced from node names alone. I’m also setting up a website for better distribution and bug-tracking and using this time to figure out a licensing model that will work for both the users and the development. Staying free would be great, but it's not necessarily economically viable for me (especially when I'm thinking of London).
There is an issue with the carve library as it's currently GPL with a possibility of an alternate license, and I've been talking to the developer to get that sorted. I had always planned to release the source for the two custom nodes used after a simulation has been baked; so if theres any issue I'll just release the source to the PolyBoolean as well.
That sounds fair, how much are you thinking?
Pricing is really one of the hardest things for me to quantify...but leaning towards $300 each and then a bundle deal for both. I’ll probably do an introductory pricing as well. Thoughts?
Keep an eye on greyangle.com for further pricing details.