Stuart Dearnaley shows you how to create raindrops and ripples to add action, drama and beauty to your water scenes
Living in the United Kingdom, rain is something you see a lot of throughout the year. While watching it out of my window I decided it would be great to try to replicate the scene in CG. In this tutorial I’m going to share my process with you, using 3ds Max and V-Ray, so that you can create your own rainy day wherever you are in the world.
The whole effect can be broken down into three key parts: the falling drops of rain, the splashes as they hit the water, and the ripples that disturb the surface. When studying the surface of my pond, I noticed that quite a random mix of ripples and splashes was being created. I certainly couldn’t follow a single raindrop as it hit the surface, and created a splash and a ripple. This would make the process a lot easier in 3D as I could treat them as separate events without anyone really noticing.
So that’s what you’ll do here, starting by creating animated maps for the separate pieces of the puzzle before combining them in the final scene to create the overall effect of raindrops splashing on a pond.
Creating a ripple
For the first section of this tutorial, you’re going to create a map for the ripples that you’ll be using in the next section. You’ll use basic keyframe animation on standard geometry to create a set of fading rings that will eventually drive a bump map on your water surface. Begin by opening a scene in 3ds Max and configuring it to meet your needs.
Video 1 00:22 Make rings
Starting with a fresh scene in 3ds Max, the first thing to do is configure the time range and render size. I’m used to working at 25fps and this tutorial is based on that, so open your Time Configuration panel and set it to PAL, with a frame range of 20. Open the Render Setup dialog and set the frame size to 300×300.
Now you can start to create the animated map that you’ll use later to create multiple overlapping ripples. Start by creating a Torus object with Radius 1 set to 35, Radius 2 to 3.5, and 48 Segments. Now scale it up on the Z axis to about 300 per cent and name it Ripple 01.
01:10 Add the motion
Create a keyframe at frame 20 for Radius 2 and the scale transform. Then, with Auto Key turned on and at frame 0, scale the torus down on its X and Y axis to around 10 per cent and set Radius 2 to 6. From here on you should switch to top view, as this is how you’ll be rendering it out.
02:38 Duplicate and fade
Now, with Auto Key off, make a clone of the ripple and change its Radius 1 to 42. Make another clone, this time setting the Radius to 27. Now you have three rings radiating out from the centre but they need to fade out as they grow.
Turn on Auto Key and, with all three selected, set their Visibility to 0 at frames 0 and 20. Go to frame 2, then set the outer and inner rings’ Visibility to 0.2, and the middle ring’s to 0.4.
04:40 Add a material
Now it’s time to add a material to the rings. Head into the Material Editor (press [M]) and create a standard material in slot 01. Call it RIPPLE. Set the Diff colour to white, and Self-Illumination to 100.
Your ripples should fade at the edges, so you need to add a Falloff map to the Opacity slot, flip the colours (so that it fades from white in the centre to black at the edges) and then apply this material to all three of your rings. Give it a quick render at various frames to check that it’s looking right before you continue to the next step.
05:30 Render the ripple
Now you can render this out as a sequence to be used as a map in the next scene. Make sure you’re in the top view, turn on your safe frames and zoom the viewport to the extents of the rings at their largest. Set your render output path and file type (I prefer to use a TGA sequence and put it in a folder of the same name) and set the range to Active Time Segment.
Now click Render and let it run through the 20 frames. You can use RAM Player to check your sequence when it’s complete.
Multiplying the ripples
In this section you’ll take the map sequence you just rendered out in the previous stage and create multiple randomly timed ripples with a nice overlapping effect. By setting up an animated emission at this point in the process, you can do some overlay compositing in the final section to make the sequence loopable.
Video 2 00:30 Go with the flow
Start with a fresh scene. Set the Time Configuration to 25fps once again, but this time you’ll use 100 frames and render them at 1,000×1,000.
In the Create panel, navigate to Particle Systems and choose PF Source. Drag to create a new PF Source in the top viewport and set Length and Width to 150. Centre the object to 0, 0, 0. Now, because you need to see the full number of particles you’re making, set Quantity Multiplier for the viewport to 100 per cent.
00:56 Set up the event
Open the Particle View and remove the Speed, Rotation, and Shape operators from Event 001 because you won’t need them for this setup. Select Display and set Type to Geometry so you can see your particles scale when you create them.
01:15 Set the rate
Select the Birth operator in Event 001, and set Emit Stop to 100. Now click the radio button next to Rate to keyframe the number of particles being created. With Auto Key turned on, set the rate to 0 at frame 0, 500 at frame 50, and 0 at frame 80. The 20-frame gap (81-100) is to allow the mapped particles to die before the sequence ends.
02:05 Make shapes
It’s time to create the particle geometry that you’ll be mapping onto – for this you’ll use a Shape Facing operator, so drag one up into Event 001 after Position Icon. They’re a bit small at first, so set the world scale to 20, with a Variation of 15. Also, make sure they disappear after you’ve finished with them. A Delete operator will do this for you, so drag one up into the bottom of Event 001. Change it to By Particle Age with a Life Span of 20, and 0 Variation.
03:10 Map the ripples
Now you need to add the ripple map you created previously to your particles. Open the Material Editor again and, as before, give it a name, then set the Diff to white and Self-Illumination to 100. This time, you’re going to load up the image sequence, so you’ll use a Bitmap map. Expand the Time menu within the bitmap loader, and you’ll see a tick box labelled Sync Frames To Particle Age. This is a great function for adding animated maps to your particle systems when used in conjunction with a Material Dynamic operator in PFlow. Click it to turn it on, and swap back to Particle View. Drag a new instance of Material Dynamic into Event 001 just above Shape Facing. Now apply your material by dragging it into the available slot in the settings panel.
04:40 Trouble with opacity
You should now have a sequence of particles being created and dying after 20 frames – all mapped with your ripple sequence. Click Render to see how it looks. There’s a problem with the way it’s rendering, due to the overlapping faces and the way it’s trying to figure out the opacity.
To fix this, simply add a gap between the particles on the Z axis. Select the particle system and change Icon Type to Box, then adjust the height to 10. Give it another test and it should be fixed, giving you a nice cumulative overlay effect. Incidentally, you may want to change the scale of the particles to create more overlap of the ripples at this point.
06:30 Render again
It’s time to render this out again so, as before, set up your output paths, zoom to extents in the top viewport and set it to Active Time Segment. Due to the amount of opacity in the scene, it will probably take quite a while to complete the full sequence.