by Kai Wolter
21 July 2017
Water Effects for Pirates of the Caribbean
Siggraph Talk 2017
For Pirates of the Caribbean: Dead Men Tell no Tales MPC faced the creative challenge to produce highly believable ocean and water effects interacting with full-CG ships and characters. This included pirate ships emerging from the bottom of the sea, a parting ocean giving space to an enormous three dimensional set, and a model ship in a bottle containing a full-sized ocean. The varied scale and nature of these effects required us to rethink our simulation techniques and toolset. In this talk we present our approaches to animate, simulate and render these using our newly developed ocean toolkit and tighter integration of Autodesk Bifrost and SideFX Houdini into our FX and rendering pipeline.
Figure 1: Ship with waterwall, ship emerges, character interaction. ©2017 Walt Disney Pictures. All rights reserved.
There are two occasions in which a ship bursts from beneath the ocean surface, and after running tests using different solvers in parallel, we found that the results from Bifrost gave us the desired level of detail and sense of size and weight. These “emerge” shots were generally run as large FLIP tanks to encompass the entirety of the action with the majority of our time spent fine-tuning the secondary elements. It was these details that would ensure the correct scale, so our emphasis was always on getting enough volume in the foam and mist passes. We would typically run multiple foam simulations with different dynamics settings from the same underlying water cache in Bifrost. We would also run a secondary drips pass at a higher resolution in localized areas – this could be done in either Bifrost or Houdini, and interact with the principle simulation. For the largest splash events, mist volume simulations were run in Houdini to represent the fine, aerated water. The foam particles in the Bifrost cache were used as the source, emitting where the particles were more densely packed.
Motivated by such challenges we looked into extending our set of fluid-solvers. From early on, we collaborated with the researchers and developers at Autodesk to introduce the Bifrost technology at MPC and further extend its features to fit our production needs. While in the past expensive conversion processes were necessary in order to render 3rd-party simulation caches, with Bifrost we chose a different route and instead render its point, volume and surface data directly using custom Pixar RenderMan plugins. To complement the functionality we used our proprietary library “Muggins” to provide a scripting binding of Bifrost to our FX artists, which allowed them to import Bifrost particle caches into Houdini.
Inspired by the techniques presented in [Horvath 2015] we updated our ocean toolkit to the more aesthetically pleasing TMA spectrum and Donelan-Banner directional spreading function. The proposed ocean depth and swell parameter gave us the additional controls to define both details in shallow water as well as large-scale effects such as waves originating from remote sources. We introduced the empirical measure by Beaufort [Encyclopaedia Britannica 2009] as a common language to describe ocean conditions ranging from calm to stormy seas (see Figure 2). Using an ocean rig in Maya, our animators could select the right condition from a library for the sequence or shot, and further tweak individual components based on supervisor feedback. All parameters defining the look were stored as primitive variables on the ocean surface. In Maya and Houdini, these variables were then read to replicate the ocean surface as a deforming mesh acting as a proxy, guide, collider and emitter in FX simulations. Similarly in Katana, the same set of variables controlled a displacement shader to construct the final, rendered surface. Whilst this new spectrum gave us plausible results quickly, the lighters still had the option to composite wave fields or utilise gobos to animate effects including calmer patches.
Figure 2: Beaufort number 12 to 1 from top-left to bottom-right. ©2017 Walt Disney Pictures. All rights reserved.
Ocean in a Bottle
For the small number of shots featuring the ship in a bottle with large scale waves, we used the guided simulation technique in Bifrost. We simulated the ocean water at “real world scale” using the ocean deformer as a guide for the Bifrost FLIP simulation. We could then use the bottled geometry scaled up as a collision object for the water. The Bifrost cache for the entire simulation was then rendered as an implicit mesh with the foam particles for the entire contents of the bottle. The finishing touch was to create a “wet map”. This was a texture created by placing particles where the water FLIP simulation came into contact with bottle geometry.
The finale of the film commences with the entire ocean being split in two, presenting the FX department with a number of unusual challenges in the resultant behaviour of the water.
Initiating events, a vast trench is carved out from the ocean surface. To more swiftly achieve approval of the layout and timing, a proxy of the “waterwall” was rigged and animated per shot. The resulting geometry was used as the source and driver for a Houdini FLIP simulation. Due to the huge scale of the event we had to slice the ocean several times down the length of the chasm. White-water and mist simulations were then generated from this underlying water cache, and displacement was added to the ocean surface for both the ocean waves and a shockwave instigated by the initial opening.
The Magic of the Waterwall
From there, the ocean takes on an equilibrium based on a supernatural force that holds the water in position. For our purposes we supposed this would essentially be a force equivalent to gravity, perpendicular to the ground, holding the walls in-place. To simulate this we had one ocean deformer on the ocean surface, and another on the vertical faces of the wall using the UV space of the waterwall geometry. The behaviour where the two met was akin to a small waterfall. Splashes created by objects intersecting the waterwall would be subject to this magic force within a certain distance of the wall’s face, beyond which they submit to the usual earthly forces and fall to earth as normal. During the development of these effects a prototype of this full physical micro-system was built, though the number of shots where you could see the full cycle of behaviour was minimal.
To add interest to the long, linear trench that formed the basis for the waterwall, smaller localised, patchy gusts of wind were to be added. To avoid having to run lengthy simulations on an area of water several kilometres in length we decided on a texture-based approach. Texture patches were generated in FX to provide isolated elements with the necessary AOVs for successful placement and control in the final comp. We created a template simulation scene, with one emitter and simple, at FLIP tank at the origin. Once the technique for extracting the displacement, velocity and other primitive variables from the cached points was established, we could then set off multiple variations to create a library of “gust” elements for placement and rendering by our lighting team.
The last stage in the life of the waterwall sees the magic forces disappear and the structure collapse, threatening to obliterate our protagonists. The mechanics of the water here are simpler, and after some initials tests we found the results from Bifrost to be the most successful in terms of the violence and complexity of form in the churning water. We used animated geometry to selectively emit from, blending the join in Houdini by loading in both the animated geometry and the Bifrost simulation cache and meshing them together. The liquid and foam simulation in Bifrost gave us a lot of great detail and again a mist volume was simulated in Houdini, emitting from this Bifrost cache.
To Axel Akesson, Andrzej Bandurski, Dionysis Bouloutzas, Jeroen Desmet, Ole Gier Eidsheim, Francisco Gochez, Patrik Hadorn, Tobias Hauck, Michael Hipp, Igor Jovanovic, Shahid Malik, Tim Marinov, Chuang Niu, Oleksandr Panaskevyc, Davide Sabilia, Fabia Serra Arrizabalaga, Sheldon Stopsack, Erdem Taylan, Diego Trazzi and Luca Vitali for their contribution to this development.
Encyclopdia Britannica. 2009. Beaufort scale, Meteorology. https://www.britannica.com/science/Beaufort-scale. (2009).
Christopher J. Horvath. 2015. Empirical Directional Wave Spectra for Computer Graphics. In Proceedings of the 2015 Symposium on Digital Production (DigiPro ’15) ACM, New York, NY, USA, 29–39. DOI:h p://dx.doi.org/10.1145/2791261.2791267