Experimentation with procedural simulation/shaders for the bubbles that occur when you turn on the jets in a Kohler tub. These types of shots can be pretty time consuming in reality, so my department and I worked on a 3D solution to the problem.
I created the bubbles using a PFlow Texture in 3DS Max that formed bubbles on a rippling surface based on height. The simulation and render setup were fairly easy, but the render times were outrageous! The biggest challenge I would say was getting the bubbles shader to properly refract together.
Render passes were then comped in photoshop.