The power of Houdini. SideFX kindly provided trial software for our team to get their heads into Houdini and this is the result.
Modeling the Boat
The first step was to model a Tall Ship using reference of the ship we wanted to create. We kept the shape and silhouette as simplified as possible in order for the simulation to run more smoothly. We textured the boat and did some look development to get it to look as realistic as it needed to be. Due to the storm conditions of the shot, we knew we didn’t need to spend too much time on this as you wouldn’t see a great deal of detail in all the rain and mist.
Simulation of the Boat
In Houdini, we started by setting up the ocean. This was simply a layering of spectra to create an infinite ocean. Once that was looking how we wanted, we created a ‘tank’ of water, a slice of the ocean, to simulate the boat in. The spectra drove a surface simulation, and the boat floated in the water, reacting to the waves as it would in the physical world. With a few tweaks, we had a movement of the boat that we were happy with.
Simulation of the Camera
We then used a smaller boat geometry, just the hull of a small boat, to simulate on a patch of the ocean a little ahead of the Tall Ship. We exported this and used it to drive the camera in the scene. What this gave us was a realistic camera movement, without anyone having to animate it. This worked well, as the camera boat reacts to the waves that are about to hit the Tall Ship, really making the audience feel like they are in the water. We didn’t add any camera shake, as this was easier to add in later in compositing, and gave us more freedom to fine-tune this movement.
Simulating the Water Surface
Next, we placed the simulated moving boat into the same ‘tank’ of water, except this time the surface of the water was set up to react to the movement of the boat. This gave us the big splashes, and water smashing into the boat. This was a simple particle, and we simulated it to mimic the movement of water as closely as possible. This meant tweaking surface tension, droplet formation and particle separation, amongst many other things. We used this simulation to create a mesh, of the surface of the ocean and the splashes.
White Water Simulation
This was the heaviest and most time-consuming part of the whole process. This involved a particle simulation of the water as it turned to white water. The main factor in this was the velocity, dictating when the ocean surface geometry would create whitewater. We also set up a wind field, meaning the white water is affected by a wind force swirling around the boat. The collision of the whitewater with the boat was a bit fiddly, but we managed to get a look that was realistic.
When the whitewater sprays up, we wanted it to vaporize into the mist like it does when water sprays up. This was fairly simple to do with a volume simulation driven by the velocity of the white water. We again used a wind field to carry the mist off the waves and away from the ship.
Lighting & Render
We rendered out the shot in four parts: the ocean surface, the white water, the mist and the boat. The lighting was done with the overcast sky that would be used in the final composite. With all of this setup, the render was split off into its four parts and rendered. The whitewater and mist took considerably longer due to the particles requiring a lot more sampling to resolve an image. These passes, alongside all the utility passes (world position, normal direction, mattes etc) were handed over the compositing department for shot finishing.
We did the compositing in Nuke, using a 3D projection workspace for the background, and 2D compositing for the ship, water and elements.
Slap Comp / Look Dev
We began the compositing process by bringing in all the CG passes into Nuke and starting a look-dev process in order to try and nail down a look. Using the camera provided to us by the CG department, we set up a 3D workspace where we could project the DMP that was actually used in lighting, onto a sphere. This would be our background element.
We wanted the storm to be very ferocious and watched through countless videos of ships trying to navigate stormy seas for reference. We decided to play with using lots of layers of drifting fog and heavy rain and slowly worked towards creating a look for the storm.
Once we had decided on a direction that we wanted to go in for the look, we began the proper compositing process. One of the first things we did was identifying and addressing any technical issues in the renders. For example, some of the CG render passes produced flickering back dots in the splashing waves. In order to quickly address this in comp, rather than having to re-render the whole sequence in CG, we used RotoPaint driven by SmartVectors in order to efficiently paint out the artifacts and track the paint onto the complex movement of the waves.
Other things that we dealt with at this stage in the process was fixing flickering textures on the ship itself by tracking patches onto the ship.
Creating the Storm
During the look-dev process, we quickly identified that in order to properly sell the final shot we would have to ground it in reality and make it a more immersive experience for the viewer so that you could almost feel the ferocity of the storm.
One of the first things we explored in comp was augmenting the water with the use of SmartVectors.
SmartVectors are a type of motion vectors in Nuke that is generated by analysing the movement of a piece of footage. These vectors can then be used to track and warp patches or elements into place on top of that footage, using the movement inherent in the footage itself.
We wanted to see if we could make the water seem more turbulent and dangerous by adding more foam and white water elements to it. So, in Nuke, we created animated noise patterns, matched it to the foam from the CG render, and then merged this on top of the water. We distorted and warped this noise onto the water using VectorDistort & SmartVectors so that it would faithfully warp with the movement of the waves. The effect of this was subtle but added to the overall feeling of this being a powerful storm.
Fog and Rain
Based on many of the reference videos that we used, we wanted to add layers of fog and rain in order to indicate that there were heavy gusts of wind in the storm. For the fog, we created elements in Nuke using 2D noise and animated this in several layers of different sizes and speeds.
In order to really show the scale and intensity of the storm, we added these fog elements in the far distance on top of waves, around the ship, in front of the ship and in the near foreground.
For the rain, we relied on a mixture of 2D elements and 3D rain generated within Nuke. We generated sheets of 3D rain particles in Nuke in several distances to the camera and added them in the comp, again in several layers in depth.
With the elements starting to work together in comp in order to bring the storm to life, another important part of selling the shot was the camerawork. We wanted to really enhance the immersive aspect of the shot and found that adding additional camera shake helped in this regard.
In order to augment the camera movement of the CG render, and to make it seem even more like the ship had actually been filmed by a camera crew situated on another boat we added several passes of the camera shake effect, with greater and smaller amplitudes.
We added the larger camera movements to the camerawork to follow the rhythm and scale of the waves, so as to place the audience more “on the sea”, and added the smaller, more shaky movements to make it seem like the camera was being hit by strong wind. We also animated the intensity of the effect to increase as the large splashes of water hit close to the camera in order to make the storm seem larger and more dangerous.