
Olivia Park
Whale breaching
Brief User Manual:
The primary goal of this project is to utilize the ocean spectrum to build a realistic ocean system.
By leveraging water tank simulation data, the aim is to create vivid splash effects to portray the breaching behavior of whales.
-
Render Program: Mantra Min, Max Ray Samples: 1,9
-
Resolution: 1280 x 720 Lights: key light, env light(HDRI)
-
Pixel Sample: 4
Technical Guide


First I created the ocean surface using the ocean spectrum node which creates a volume form of wave and controlled the wave form more clamly by controlling wind spectrum type and decreasing wind direction.
​


Using flattank I connected with whale animation as a static object so that the whale can collide with the ocean surface and create waves. ​




I use the VEX code to find the length of the velocity vector (f@vlen). I remove points with a velocity length of less than 2 and those below Y coordinate 0, getting rid of unnecessary underwater points. Afterward, I create a vector volume from the velocity vector bounding box and connect it to a PopNet. Using Advect by Volume, particles move close to existing points, creating more points within the original area without going beyond it.
​
​


For drip simulation, I imported a whale animation and applied paint to indicate the areas on the whale object where the particles will drip onto its surface. Using the point wrangle node, I set up a condition to delete points if their random point number is less than the bias so that the points can disappear within a specified range and I also oriented their normals along the y-axis.


Then I created a circle near the area where the whale jumps and created a surface on the ocean with skin node. I connected the splash and the circle surface with the ocean evaluate so that it could attach to ocean waves and deleted unnecessary particles under the ocean surface.


I gave nosie on the particle using attribute vop. To avoid noise at the emitter's start, I use particle age normalization. By dividing the age, I make sure it's 0 when born and 1 when it dies, giving it a smooth lifespan. Then, I add turbulence noise, blending positions with bias data. This makes particles stick to the surface at first, gradually showing natural noise like a whale surfacing. A ramp helps control the noise to create subtle water patterns.
​


To show points clumping together, I used two Attribute VOP nodes in a drip simulation. The first node takes points within a certain radius, and averages their values, preventing particle scattering. The second Attribute VOP, tied to the whale's surface, gets average point values, keeping particles stuck to the surface for a flowing water effect without spreading.
​
​


After the drip simulation, I cleaned up unwanted elements below the water surface using Point Wrangle and attributes. Then, I created mist using Pyro Source, generating density and temperature attributes. Adding point velocity and employing rasterize, I created a volume for the simulation.
​

I simulated using the mist source I created and utilized a Gas Wind node to move the volume in a specific direction. In this case, I shifted it by 1 unit along the z-axis and adjusted the wind strength using the wind scale.





To minimize the mist data, start by compressing it using Volumecompress. Next, separate the Density and Velocity volumes with Blast. Convert VDB transforms them into VDB format, and VDB Vector Merge combines them into a single volume, reducing the data size. Switch the voxel scale to 2 using VDB Resample with "using voxel scale only," and then use Merge to combine the reduced vector data.


Going back to the ocean surface, the sections with simulation are rendered directly, thanks to the simulation itself. In contrast, areas without simulation use displacement for rendering. By employing a particle fluid mask, you can apply a volume mask. This selectively renders the simulated part with a water displacement shader in blue, while the unsimulated red areas are rendered without the simulation effect.

The bounding box within the regions of the particle fluid surface serves the role of expanding the water surface based on the original water tank. This is utilized to connect the ocean surface to the channel of the water tank simulated.