A water fountain played a key roll in shaping the world of Zootopia. It was put at the center of Zootopia downtown plaza. I cached out 500 frames of a water fountain cycle, and artists created different compositions and motion of fountains just by re-timing the pre-cached cycle. At the end of production, we decided to add 20 more fountain shots in the concert scene, and following requirements came up. Since the water fountain layout was changed and a new stage geometry was added at the center, we had to generate a new set of fountain. And we also needed more localized and detailed controls of timing to match the motion of water fountain to tempo of the music and the character's performance on stage. Instead of simulating a new set of fountain, I developed a tool set to re-use the original fountains by rearranging them.
First, I simulated a set of water fountains. I generated organic shapes and rhythmic motion of the fountains by animating the “pressure” attribute of all nozzle emitters. Considering prospective per-nozzle control, all points which were emitted from same nozzle, had the same “emitterId”, and water stream geometry which was shot up at the same time, had the same “emissionId”.
For the concert sequence, we needed a new layout of the water fountains. I proposed a system which allowed the rearrangement and re-timing of cached water fountain geometry. The nozzle positions on the original and new layouts were used as reference for the position offset. After rearrangement, I cached the new fountain geometry data and proxy geometry data per group and per component. Without running a new simulation, the performance was dramatically increased and we kept the consistency of the look.
In other to tackle the demand for a new water fountain layout, and in order to have more detailed and localized controls, I designed interactive user interface to provide artists with full control of pattern selection and re-timing of it. This interface allowed artists to load the proper geometry cache of water fountain groups, and to apply frame offsets and nozzle position shifts per group. With very light proxy geometry, artists were able to get result very interactively and intuitively. In addition, we could have very quick approval turn-arounds with it. Stored “emitterId” and “emissionId” let us apply per-nozzle and per-emission control, too. Artists matched the motion of the water fountains to the music beats easily with the interface and controls. The “emitterId” was displayed in the view port for convenience. For the pond component, I added a new rig which generated procedural ripple displacement and bubbles around the modified water fountain streams. Shot data generation in the pipeline was a separate process from art-direction. After getting creative approval, artists ran tools for caching out data in an organized manner. The pipeline also managed geometry instancing, material binding, render pass setup, and data publishing. With this pipeline, we could not only increase the performance but also make the look of water fountains unified for all concert sequence shots.