The Watershot
Friday, 18th January 2008
If you've ever been told you can't do something, with
full knowledge that you can, you produce what I refer to as
"Spite-Art". This my friends is what we call spite art.

The establishing shot

Wireframe of the establishing shot
The shot is simple enough in design. The shot would
open to turbulent seas, then suddenly the camera pulls back to
reveal the water is actually contained within a glass, the
background sky is actually the label of a bottle. Then for good
measure, a robotic hand picks it up.
Why the robotic hand? Because I damn well wanted to.
Step 1 - Creating the Water
Because the water would also require a base for accurate refraction,
it was made out of a cylinder. The top was then assailed with
various noises and displacements, bump maps and various other
methods. While there was a major ray-tracing component, the water
texture is actually photos of water mixed with procedural solutions
used mostly as a mask.
When the camera pulled out, the water that looked
decent when the camera was close, looked terrible out wide. The wide
shot version of the water was a standard Mental Ray physically
accurate water shader. The switch between them happened over a
period of 10 frames (the transition where the camera flies
backward). Luckily, there was enough blue in both sides of the
transition for it to feel extremely natural and not at all "they
fudged it in post".

A transition Frame

The transition frame final - Note the "Original" boat
floating in the middle of the water
Step 2 - The mast on the boat
Mesh. Noise. Deformation. Yawn.
Step 3 - The robot hand
Based on a design I pulled out of the air, this hand model was
knocked over in an hour including 'Dynamic' cables. Since I was
quite aware of the range my robot arm would need to do in the shot,
the cables are actually a hose object with a soft selection in the
middle and a flex modifier applied. This allowed them to jiggle
realistically when the arm moved and clamped.

Final robot arm shot

Hand mesh
Step 4 - The render
Final gather, HDRI maps, area lights and general trickery were all
heavily utilised. Render time was no concern.
Step 5 - The composite
The shot went through several iterations. Initially, there was no
splashes on the side of the boat. Pulling in stock footage of a
waterfall, I luminance keyed the splashes I liked the most and then
tracked them in pieces to the bow and stern of the boat. The boat
was originally not intended to be included in the shot (but was
included after someone said "You need a boat or something").
More disturbingly, I decided to put the reflections
in entirely in post. There was never a 3D reflection rendered of the
boat.
To fake caustics on the underside of the boat, I
offset its matte and subtracted it from itself (so I only had the
bottom of the boat), blurred and used a heavily contrasted piece of
the water (taken from somewhere else) and applied it as a tinted
additive layer.
At this point, the boat had splashes, reflections and
caustics.
Step 6 - Final Touches
So at this point, the shot was in the 95% stage. The last 5% was
finding some wind/snow stock footage and applying it over the water
layer. This cemented the comp together. A fairly contrasty grade and
glows were then applied with a subtle hint of grain.
Step 7 - Laughing at my mistakes
In order to put the boat onto the water, I used a surface constraint
on two different vertices of the water. The boat would then sit
between the two. Cool.
Not cool. In all animation previews it worked
flawlessly. Then at render time, it was nowhere to be seen. Why was
this?
Render Iterations on the Turbosmooth was set higher
than what was used in the viewport, thus the number of polys in the
surface was different, thus the vertices that existed in the
viewport existed elsewhere (or not at all) on the render-time model.
Rendering the boat off on its own pass was simple enough and quick
enough that this didn't actually pose a big issue.
And viola, the water/robotic hand shot is complete!

Ah, this is obviously some new usage of the word
'safe' I was previously unaware of.