Rain VFX breakdown

Beauty = Diffuse Color ID = Opacity Mask The normal map is obtained by baking the 3D Splashes to a bake plane in Substance Painter. The Sampler Info node is used to hide the cards that are more perpindicular to camera

Table of Contents:

← Previous

Next →

3. Maya nParticles Process Surfaces that should emit particles are duplicated, subdivided to match final render resolution, and then all non-skyward facing polygons are deleted.

Additionally, all render attributes are disabled for emitter surfaces.
RAIN VFX Lifespan Mode = Constant
Lifespan = 0.250 (this is in seconds)
breakdown Each keyframe of the splash is modeled, lit, shaded, and rendered utilizing Redshift 3D.

This is a detailed breakdown of all the Rain VFX I created for an episode of Kamp Koral: Spongebob's Under Years called, Tag You're It. In this episode it rains for 10 of the 11 minutes.

I was inspired at the time by a handful of talented artists online showcasing impressive real-time rain scenes in Unreal Engine, and I had just finished playing Last of Us 2 which has beautiful rain in it.


The rain is composed of four parts: the two-dimensional (2D) splashes of water you see bouncing off the ground, the water ripples on the ground, rain drops sticking to and running down buildings and surfaces, and the sheets of rainfall in the sky. This breakdown will go over each of these four parts in detail

1. Reference White Highlighted Geometry = nParticle Emitter Surfaces The episode, Squid Noir from the original SpongeBob series served as my primary reference for the rain. Assigning the 4 splash cards to the nParticles:

Shift + select each card in sequential order.
Then shift select the nParticle emitter you want to assign the cards to.
The cards are duplicated and rotated 90 degrees. I. Rain Splashes 2. Modeling and Rendering the Splashes Each particle has a lifespan of 0.25 seconds. This number is important in the next step. The diffuse, opacity mask, and Normal are applied to cards using a Redshift Sprite shader. + With the splash cards and emitter selected, create an nParticle Instancer Diffuse Color and an inverted Alpha channel are plugged into a viewport shader.

I. Rain Splashes

The particles lifespan is 0.25 seconds. There are 4 Splash Cards that need to be shown in that lifespan.

Cycle Step = Particle Lifespan/# of sequential cards

Cycle = Sequential
Cycle Step Unit = Seconds (matches particle time)
Cycle Step = 0.0625
Each particle now instances the Splash cards in sequential order before the particle dies.

While this is good progress the particles aren't oriented to their surfaces.
And when viewed from above it's obvious the cards are not being given a random rotation. Maya nParticles cannot get the surface normal of the surface their being emitted from by default.

In the plugin-manager, we need the plugin "Nearest Point on Mesh" loaded.
4 custom attributes are added to the nParticle system under the, Per Particle (Array) Attributes: Parent ID, MeshPP, MeshNormalPP, RotatePP

A creation expression will be assigned to these custom attributes.
Right Click on any of the empty fields in this attribute list, and click "Creation Expression" Expression assigned to each nParticle system gets the surface normal as well as adds random rotation to each nParticle. Select the nParticle and navigate to the Instancer attributes associated with that nParticle system.

Found in the nParticle > Instancer (Geometry Replacement)
The cards are working, but they all appear rotated on their sides. Now the cards are oriented to the surfaces they emit from. Setting the Rotation to rotatePP will now apply the creation expression to each instance. This is fixed by rotating the original cards geo groups that are being instanced, 90 degrees.

II. Water Ripples

4. Caching the nParticles Freeze transforms for the rotation to update in viewport.

III. Raindrop Material

Once the Particle Emitter Rate is final, select the emitter, go to the menu nCache > Create New Cache > nObject Option Box.

IV. Compositing

Cache start time is set to -15 to allow the nParticles to fill the scene before frame 1.

End time on Kamp Koral was slightly longer than the longest shot in the script which was onscreen for about 17 seconds.

a. Splash Cards

b. Maya nParticles

a. How I did the ripples for the show

b. How I'd do ripples now

a. Substance Designer Raindrops

b. Raindrop Redshift Material

a. Substance Designer Rainfall plates

b. Compositing Rainfall using Deep

This covers the process of creating the rain drops. This process was performed on every set, building, and prop that was in the rain.