QF Radio

CG Supervisor, FX, Lighting, Rendering

Houdini to the rescue

This was one of my first big Houdini projects at Gentleman Scholar, and also one of the most difficult due to the compressed schedule, relatively long length for a commercial, and the small team size. Most of the big characters and props were animated, lit and rendered entirely in Maya, and I was responsible for the lighting, rendering and materials of these, but the prominent wires motif that’s present in every shot proved to be impossible for the Maya animators to achieve at the right level of fidelity (Maya’s just not very good at generating geometry procedurally, especially back in 2013). I spent a long few days building a tool in Houdini that could generate these wires quickly and smoothly and send them back to Maya for rendering with the rest of the assets, then re-animated the wires based on the timings from the Maya animators. The result worked pretty well!

The “ocean” shot halfway through made even more extensive use of Houdini… I built a basic ocean surface and then projected the wires onto it, then turned the animating ship geometry into a signed distance field that could be used to procedurally push the wires out of the way as it sailed across. Several layers of these wires were generated and then loaded into Mantra as procedurals that could be streamed in at rendertime, to allow for efficient renders that were still relatively quick to preview in the viewport and iterate on during animation.

Rendering cheats

The biggest drawback of having all these shiny wires clustered so closely together, aside from collision issues, was that the rendering engine (VRay) really didn’t like having to trace that many glossy reflections back and forth across so many different surfaces. With a small render farm and tight deadlines, there really wasn’t any time to spare. I managed to cut the render times by about 75% by limiting the ray distance of the wires to just a few centimeters, and defaulting to environment lookups after that range. That way, wires that were very close together could still occlude reflections believably, but wouldn’t look any farther than that, saving hours of computation time.

I’m pretty proud of how well this project holds up, considering the limited resources we had at the time!