Revenge of the NURBS

I recently learned about the existence of MoI (Moment of Inspiration) thanks to discussion on Cheetah 3d’s forums. I’m normally not much interested in Windows-only software, but for MoI I’m willing to make an exception. MoI is for NURBS modeling what Silo is for polygon/subdiv modeling. It doesn’t suck. It’s written by Michael Gibson — who apparently was the original developer of Rhino (the reigning NURBS modeler) — but this time he designed for tablet users (i.e. think single mouse button) from the get go, and the result is nothing less than a 3d doodle pad that just works.

A classic 50's style rocket
A classic 50's style rocket

This is the first model I created with MoI. So this is me learning to use the program. It’s a very simple model, but it’s also a model I’ve never been able to satisfactorily complete in any 3d modeling program ever. Note that I chopped it in half just so I could show off the interior. There’s no shortcuts or compromises. E.g. if I did this using subdiv modeling I wouldn’t have fins with a real airfoil cross-section and sharp edges. Chances are the shape of the fins wouldn’t be quite right either since you just end up pushing edges around until the curve looks “close enough”.

Where the fin meets the fuselage
Where the fin meets the fuselage

And look at the beautiful and precise way the fins join onto the fuselage. (You may notice that the control spline does not match the geometry in this picture — that’s just a consequence of my mesh approximation preferences which can be dialed up as far as you’re willing to live with.)

Cabin interior detail
Cabin interior detail

This is a close-up of the cabin cross-section. I want to show how the window openings are actually modeled. I made all the rotational symmetry five-fold simply because I could.

A little more cross-section detail.
A little more cross-section detail.

I actually took a bit of a shortcut in modeling the interior of the rocket nozzle, but that’s simply because by that point I’d already decided to buy a copy of MoI and I wasn’t going to put more work into the model since I was using a save disabled trial version.

Playing around with MoI has been amazingly liberating. Instead of messing with subdiv for hard edged models because working with NURBS is just too painful, I now have a tool for creating hard edged models (like spaceships) when I want to, and I can use subdiv modeling for what it’s best at — organic stuff. I can’t wait for my license to show up.

LuxRender

Screenshot of LuxRender in Action
Screenshot of LuxRender in Action

So, remember how I was saying that the one feature Blender doesn’t have is good motion blur? Turns out that there’s an Unbiased Renderer that works with Blender (it’s free and open source too, of course) and it produces amazing results (albeit slowly). It’s called LuxRender, and it’s a fork of the PBRT (Physics-Based Rendering Technology) project, which is essentially a rendering engine put together to test new theories about physically accurate rendering (i.e. stuff that ends up in SIGGRAPH papers).

Correction: it turns out that Blender has very good vector motion blur support and one should never use Blender’s frame-averaging system unless one is a masochist. (One of the problems with Blender is that often a crappy feature remain prominently in place while a newer, superior alternative feature remains hidden. This is the case both with motion blur and the rigging.)

There’s an old joke in computer graphics called The Law Of Constant Rendering Time which holds that it always takes a day to render an image, regardless of the speed of the computer. The basic idea is that we’ve been “improving” our lighting models at exactly the rate necessary to cancel out improvements in processor speed. The latest incarnation of this is unbiased rendering, which tries to actually model the way light works (versus taking various shortcuts which produce biased renders — i.e. renders which do not converge on a “correct” render no matter how much computation you throw at them. Radiosity and raytracing are both biased under this definition).

Anyway, this research has spawned a whole new generation of rendering engines, all markedly slower than we’ve grown used to, and with the peculiar property of producing noisy images that slowly get better (and you can spend as much time as you like rendering them — you’re never “done”). LuxRender is free, but there are several commercial options including Maxwell Render, Indigo, and Fryrender. I don’t know how fast Maxwell Render is (there’s no question it’s good), but its priced in the “if you need to ask, you can’t afford it” ballpark. All in all, the whole PBRT crowd reminds me of the “charge what the market will bear, tripled” gold-rush mentality of SGI era. (Well, Indigo is fairly cheap.)

I’ve been playing around with LuxRender this evening. It’s definitely an awesome tool for creating the occasional “hero” render, although both the rendering time and the extra difficulty setting up a scene make it difficult to use casually. (It doesn’t have normal “lamps” — all light sources are physically modeled objects that glow or transmit light… so a light bulb is a glowing filament — and you need to make special materials independently of Blender.)

The other fascinating aspect of LuxRender is that by default it’s kind of like “the works” in an old school renderer — you get everything — caustics, sub-surface scattering, refraction, internal reflection, and even chromatic aberration and depth of field “for free”. And, unlike with old school renderers, these aren’t set up with tricks and fudges where you finess the parameters to get the right result. You pick the materials and lights correctly and it pretty much does what it ought to. So, in a sense, this approach reduces the work done by the artist at the cost of more CPU time — it’s just that CPUs aren’t quite fast enough yet.

caustics
A simple scene showing off the frost glass, shiny metal, and glass presets. This is the result (original at 800x600) after about five minutes on my Macbook Pro.

But it does look like the future of rendering.