Underwater Caustics

As an Intro to Maya student, I was faced with the task of coming up with a solution to simulate underwater caustics for the Isla Bonito project.

I want to give credit to Randy Goux from the Kleiser – Walczak Construction Company as he ultimately introduced me to the utility nodes of this set up and being fresh in Maya the introduction to utility nodes helped me out tremendously.

By taking the water based Brownian texture and channeling out high and low range values, you can pipe out a very distinct and high contrast pattern from the texture. This pattern is then plugged into a contrast node for fine tuning the variations between the low and high values.
You then animate the brownian’s 3D placement node in Y to get the swirly motion to the pattern.
This basic set up is then duplicated and by offsetting each placement nodes animation you can get some variation in the motion of each texture.
Each texture’s out color is then fed into a blender node’s color 1 and 2 to mix the textures into eachother. This is done once more to get one resulting out color, deriving from the motion and values from four separate animated brownian textures.
Since the blender nodes dull the pattern a bit, you can insert a multiply divide node to regain the strengths of the patterns. The resulting outColorRed is then fed into the caustic Light’s intensity value.

The image describes the base set up.

  • 1. output.R, G, B —> input.X, Y, Z
  • 2. output.X —> firstTerm; output.R, G, B —> input.X, Y, Z
  • 3. output.R, G, B —> color2.R, G, B
  • 4. coutColor –> value

An additional light was used as a fill light to regulate the contrast between the sand bottom and the caustics but this can also be done by inserting yet another blender node between the resulting out color’s R value and the light’s intensity (connect outColor.R to blenderNode.blender).
Color 1, then, represents the value of the caustic pattern and Color 2 the non lit areas. I found the effect to work better by just using an additional light. render it at all at the same time.

Below is the motion result.