Caustics: Dropping the Cow into A Pool of Water
Caustics: Dropping the Cow into A Pool of Water
by Jim Tierney, Digital Anarchy, Palo Alto, Ca, USA
©2001 Jim Tierney. All Rights Reserved. Used at CreativeCow.net by kind permission of the author.
In this tutorial, Jim Tierney creates the effect of an object dropping into water, using the Caustics and WaveWorld filters in Adobe After Effects.
First: Download the project files here: Mac Windows
To start off with, we'll import the pool_bottom.psd file. This will act as the bottom of the pool of water, that we'll be dropping our object into. In this case it looks like a bunch of pool tiles, but the bottom could be rocks or sand or whatever. Caustics can use any image you can import into AE as a source for the 'pool bottom', it doesn't have to be a Photoshop file.
Now we'll use WaveWorld to create the source for the water surface. This is what acts as a displacement map and causes the watery distortions.
Create a new comp.
Create a new solid
Apply WaveWorld to the solid.
You'll notice that by default we're in 3D Wireframe mode. You can use this to see how the height map that WaveWorld generates will affect the water surface. Feel free to play with this on your own, but we won't be looking at it in this tutorial.
So, first off, change 'View' to Height Map. This changes the rendering mode to produce a grayscale image we'll use as the source for the water surface.
At first, you won't see anything... but move forward in the timeline and you'll see waves eminate from the center. The Waves are controlled by the producer points, in this case Producer Point 1. Open up the section on Producer Point 1.
Move the Time Marker to 01:00, so we can see some waves.
Since the object we'll be dropping into the water is longer than it is wide, we want to make the waves somewhat oblong. This can be accomplished by changing the height to .15. The wave is now stretched along the Y axis.
An object dropped into water doesn't continuously create splashes. It hits the water surface, creates a splash, then sinks, and that's the end of it. Unless it floats, of course, but that's not what we're doing here.
So we need a way to stop the creation of ripples.
The Amplitude controls the height of the ripples. By keyframing this to zero, we can effectively turn the ripples off, after the first few have been created.
Move to frame 18, 00:18, and set a keyframe for Amplitude. The default value of .500 is fine. Move forward to 00:20, and set Amplitude to zero, this sets another keyframe.
If you now move forward in the timeline, you can see that this creates a few waves that sputter out around the 3 second mark.
So far so good. Move the Time Marker back to frame 20.
You'll notice that our waves look a little pixelated. It looks kind of 'blocky', like jpeg artifacts or something.
Since WaveWorld actually generates a 3D mesh for the surface, it matter how many polygons make up the surface (you can see this if you play around with the Wireframe Preview rendering mode). To bump up the resolution of the grid, twirl the Simulation arrow down, and set Grid Resolution to something like 100 or 150.
You'll notice the blocky artifacts go away and we're left with nice smooth grayscale waves.
The way everything should look, one second out.
Pre-comp this as 'WaveWorld map' and we're ready to get rolling with Caustics.
Turn off the WaveWorld comp to get it out of view. Move it so it starts at 01:03. The reason for this will be obvious in a minute.
Select the pool_bottom.psd from the project window and drop it into the comp. Make sure it starts at time 00:00.
Drop the Cow.ai logo into the comp. Set it to Best Quality. Move it so it starts at 00:03
With the Cow layer select, press 'S'. This will show the Scale parameter. Set this to 150, and set a keyframe.
Move to 01:03, and set Scale down to 50. This will cause Cow logo to fall from the sky, and eventually, it'll hit the water. We'll scale it down a bit more once the Cow has submerged. For now, we've got Cow's raining out of the sky.
It should all look like this:
Select the pool_bottom layer, and apply Caustics to it. Nothing will happen. And that's good. We don't want Caustics to do anything until 01:03. Actually, at the end up this tutorial, we'll add a few things that will make me a liar about not wanting Caustics to do anything until 01:03. For now, tho... we're happy.
Since we applied Caustics to the pool_bottom layer, it's automatically our Bottom. To see this, twirl down the 'Bottom' section, and notice that the 'bottom' pop-up, has the pool_bottom layer selected. That's the last we need to look at this, so twirl the arrow back up, and let's move on.
Twirl down the 'Water' section. Set the 'Water Surface' pop-up to the WaveWorld layer. Even, though the pool_bottom layer starts at 00:00, Caustics won't start displacing, until 01:03, because that's where the WaveWorld layer starts.
Caustics uses the Water Surface source to generate the distortions. If the source doesn't start until 01:03, like we have here, NOTHING happens until 01:03.
If you play the animation right now, you'll see that the Cow starts to fall out of the sky, and at 01:03, hits the water, and causes waves to eminate out. Either do a short render or ram preview to check it out.
Well, that's great, but the waves look a bit flat. Set the Wave Height to .300. This is just like increasing the displacement when using a displacement map. It just increases the contrast of the underlying grayscale image, resulting in a more severe distortion.
Let's also increase the Water Depth to .200. Caustics generates it's distortions from refraction. Refraction is the way light bends, when it passes through water, or glass, or other semi-transparent objects. If you look at room through a water glass, the room looks distorted and stretched. That is refraction. Same thing occurs when looking at the bottom of a pool of water.
If the surface is flat, very little refraction occurs, however, if it's curved, as in the case of ripples or waves, you get lots of distortion. The further away an object is from object causing the refraction, the more it will be distorted, and this is what happens with Water Depth. The deeper the water, the more distortion you'll see.
Compare the distortions created when Water Depth is set to 0, .1, and .5. Quite a difference.
Depth set to .1
Depth set to .5
Depth set to 1.0
Anyways, moving right along, set Water Depth to .200 and between that and Wave Height we should have the bottom getting nicely distorted.
The parameters should look like this:
That takes care of our water. Except will still have this Cow sitting on top of it. Unfortunately for Cows, as with the rest of us, they sink. And sink it will.
Duplicate the Cow layer, and set the layer in-point at 01:03. Apply Hue and Saturation from the Effects>Adjust menu, and set it up like so:
This gives the duped layer a blue tint, which help pull off the effect of it having submerged under water. As I mentioned before, the Cow just gots to sink.
With the duped Cow layer selected, hit 'S' to bring up the Scale parameter. Move to 01:13, and set the Scale to 48. Since we duped the layer and didn't move it, our keyframes going from 150 to 50 should still be there, so this will be a third keyframe, and should be 10 frames after the 50 keyframe.
Select the original Cow layer, and set that scale to 48, as well. At this point, move the end point (alt/opt + ]) to this point. The top layer is going to continue to scale down and we need to make sure the original layer is hanging around screwing things up.
Then move to 04:00, select the duped layer, and set Scale to 25. It should all look like this:
With the duped layer selected, apply Iris Wipe from the Effects>Transitions menu. Set it up like so:
This will allow us to transition from the original layer to the duped tinted layer. Making it look as if our Cow has dropped beneath the surface of the water. You could also use a mask to pull this off, and it would probably look better, but for the purposes of this tutorial, this is easier.
Set a keyframe for the Outer Radius at 01:05, with a value of 200. Set another keyframe at 01:11, with zero. Wa la! The Cow has sunk.
Well, we've sunk the cow, but it doesn't look quite right as it's sinking. We can see the pool bottom distort through the waves, but the Cow just sinks unmolested. Well, we can't have that.
Now we're going to use Caustics to displace the Cow. This is going to be a bit tricky, so bear with me.
Apply the Caustics to the duped Cow layer. Notice that the Cow layer snaps back to it's original color. Move the Caustics effect ABOVE the Hue and Saturation effect, in the Effects Window. By default, Caustics will ignore the other effects applied to the layer. However, we can force Hue and Saturation and the Iris Transition to be recognized, by having them applied AFTER Caustics. Of course, you could pre-comp and do a couple other tricks, but in this case, moving the effects around works just dandy.
At this point set the Water Surface (Water section) to the WaveWorld comp, so that the distortion our Cow gets, will match that of the pool bottom.
The other thing you probably noticed was that the Cow now has a visible border around it. It looks like it's mounted on a piece of glass. To get rid of this, set the Surface Opacity (Water section) to zero and set Specular Reflection (Material section) to zero, as well. This gets rid of the specular highlight and should remove the border, leaving us with a distorted Cow.
Like usual, I'm not happy. The Cow just isn't distorted enough for me. To fix this, let's set Water Height to .5, and Water Depth to .4. This should give us LOTS of distortion. And it does.
And that should take care of it. The Cow has been sunk. Basically. Read on for a couple more tips on how to make it look even better.
Fractal Noise: Usually, a water surface isn't going to be perfectly flat. To fix this, go to the WaveWorld comp, and create a new solid layer. Apply Fractal Noise to that (Effect>Render>). Set the opacity of this layer to 10%. Set a keyframe for Evolution at time 00:00, and then set another one at 05:00 with a value of 2 rotations. This will animate the fractal noise.
If we go back to the main comp now, all parts of it are distorted at least somewhat, and the waves still show up. The animated fractal gives the surface of the water an undulating type of look. Actually this screws things up a bit, since the WaveWorld comp doesn't actually start until 01:03. Consider it a challenge to get the waves starting at 01:03, but have the Fractal Noise going from 00:00.
Bezier Warp: To give the Cow some added distortion as it floats to the bottom, use Bezier Warp (Effects>Distort) to push and pull on the corners a little. Things tend to move side to side as they float down, so this will add a little realism.
Bounce: Even though it's water, the Cow would bounce a little when it hit the water surface. Instead of having the scale animate from 50 to 48 smoothly, stick a keyframe for 51 in there, about 4 frames after the 50 keyframe.
Click on the picture below to see the final render:
Jim Tierney is the creator of Digital Anarchy and has worked on some of the most widely known and respected After Effects plug-in packages out there. Starting at MetaCreations, with Final Effects, and moving on to Atomic Power and their Evolution and Psunami packages . He also worked for Cycore for awhile, but was primarily involved with their 3D software and only remotely involved with Cult Effects. You can visit Jim's website by clicking on his logo to the right.
Please feel free to come to the Adobe After Effects Cow to discuss this technique or others. Jim Tierney is a frequent visitor and contributor.
And in case you're wondering why a COW? COW stands for Communities of the World. If you've found this tutorial from a direct link outside our site, please drop by CreativeCOW for a visit. We hope you'll make it your new home.
|Related Articles / Tutorials:|
Adobe After Effects|
Zero VFX: Why Some Effects Are Better Unseen
Kyle Andal and Gerard Andal, lead compositors at Zero VFX, bring invisible post-production magic to several films - including 2014 Academy Award-winning "American Hustle," in which the team helped transform 2013 Boston to 1978 New York - and also several commercial shots with mocha Pro.
Editorial, Feature, People / Interview
Adobe After Effects|
LightGrid Script and Demo Tutorial Part TWO with New Feature
LightGrid Script creator Brian Charles demonstrates his newly modified After Effects script for rigging lights in grids and circles. The modified script with the new feature, which adds the ability to enable individual light colors through a checkbox in the effect control panel, is available as a free download in the Project Files folder.
Tutorial, Video Tutorial