How to make Puddles
As I announced in my last video, the theme for this month is Weather! So to kick it off, I'm starting with a very important topic: Puddles. Because no rain scene is complete without them!Puddles are notoriously known amongst the 3d community for being difficult to achieve, and for very good reason! They are flush with the ground, partly reflective and subject to water physics.
I used to just avoid them at all cost. But thankfully I've discovered an easy method that achieves stunning results by harnessing the power of textures ;)
Many of you have requested more text based tutorials, so today's tutorial is sans-video ;)
Setting up the scene
With a new scene, delete the default cube.
Add a plane (Shift+A).
In the top view, scale the plane to the shape of a rectangle. You can do this by pressing S and then X or Y.
We will now UV texture the plane. First split the view port vertically and change the new view port to a UV Image editor. In the image view port, open a floor texture of your choice. For this tutorial I will be using a cobble texture off CGTextures.com. You can download the texture here.
To UV unwrap the plane, enter edit mode (TAB) and press U and select Unwrap from the pop up menu. You will need to rotate the UV coordinates, so that the scaling matches the object.
Position the camera to the desired position for your scene. In my case it was on the left hand side.
If you switch to texture view mode, you can see the texture in real time. This can help you position the camera.
Creating an environment
Before we start texturing the plane, we need to set up an environment so that the plane has something to reflect.
Go the World panel and check Paper Sky. This will ensure the texture we are about to apply, is not stretched or warped in anyway.
Switch to the Texture panel and ensure that World is visible along the top bar. This means that we are applying textures to the world settings, not an object. Then add a new texture.
Set the texture type to Image or Movie and Open a background image.
You can choose any image for the background, but I will be using this image that I found on Flickr:
Depending on the size of your scene, you may need to tile the texture to create better reflections. You can do this in the Tile options. To make the background appear in your render, check Horizon.
To create reflecting light, move the default lamp to the end of the plane and duplicate it as many times as necessary. This will vary depending on the scene, but I've found that around 10 lamps at varied heights and varied energy values to be effective.
The lamp settings can be left as default, but you may like to change each lamps color depending on your scene.
Adding the ground texture
We've UV mapped the texture to the plane, but before it will show up in the render, we also need to add it too the texture settings.
With the plane still selected, add a new material.
Leave all the options as default for now.
Switch to the texture panel and add a new texture.
From the texture type drop down menu, select Image or Movie.
Next, click Open and select the same floor texture that we used previously.
To ensure the texture uses the UV coordinates, select UV from the mapping options drop down menu.
If you rendered now you would get a result similar to this.
Now comes the tricky part. In order to tell Blender which parts of the ground are going to be puddles, we need to paint over the floor texture with a thick black brush. You can do this easily in a paint editor, such as Gimp or Photoshop. Make sure you paint on a separate layer as you will need to use it again later in the tutorial.
Alternatively you can download my ready created texture here:
Before we add the texture, you will need to activate Mirror in the materials panel. Leave all the settings as default as we want the texture to control what parts of the plane will be reflective.
Add a new texture and place it underneath the previous texture we created earlier.
You may like to name the texture Mirror and the previous texture Col so you don't get them confused. Set Image or Movie as the texture type. Click Open from the texture panel and select the altered texture we just created.
In the texture mapping options, choose UV.
In the Influence panel, select Ray Mirror. This will take the light areas of the image and make them reflective. Check RGB to Intensity to convert the image to B&W format. Check Negative to invert the texture. This will make the dark areas of the image reflective instead of the white areas. We want this so the cracks and puddles in the image are reflective.
If you rendered now you would get a result similar to this, which is very reflective! This is necessary however, as we will be adding a bump map which will distort the reflections and make them less obvious.
Creating the bump map
Prepare for awesomeness! Bump maps push the scene closer to realism by adding raised imperfections to a surface, and are great fun to use.
Add a new texture underneath the previous, and name it Normals. Select Image or Movie as the texture type and click Open image. Select the custom made puddle texture.
In the mapping options, select UV.
In the Influence options, select Normal. If you choose a positive value the dark values will become raised. However the tiles in my texture are light, so I will be using a negative value to reverse it. Set the value to -0.15
If you rendered now you would see a result similar to this. Whilst it is okay, I would prefer the cracks to be more reflective and less distorted.
To do this we need to alter the contrast of image. In the texture settings, set the contrast to 3. This will make the cracks extremely dark, and as a result unaffected by the bump mapping.
Perfect! The cracks now look more flooded as if they have collected water.
Specularity is used in 3d to fake reflections, so as a rule of thumb you normally shouldn't use both reflections and specularity on the same object. However... in this particular case, I want the lights to create a light sheen effect over the tiles and puddle.
Because the tiles are white, you will need to create a separate texture with white puddles. This is so the specularity effects the puddles as well. This texture will be identical to the previous, only the puddles will be white. This can easily be achieved in Gimp or Photoshop, by selecting the puddles layer that you previously painted and inverting it.
Alternatively, you can download my ready made texture here:
Before you add the texture to the plane, go to the material settings and turn off specularity! The reason for this is that we want the image texture to control the strength of the specularity. The value in the material settings will apply normal specularity to the entire object, which we don't want. So make sure this is set to 0.
Go to the texture panel and add a new texture underneath the previous textures.
Change the name of the texture to Specularity, and set the type to Image or Movie. Click Open and select the new puddle texture.
In the mapping options, select UV.
Check the Specular Intensity. The value will define how much or how little specularity you want in the image. In this example, 0.6 works okay but you may need to experiment with a value that is appropriate for your scene.
If you rendered now you would see a result similar to this. Notice the subtle sheen off the tiles and the puddles? Perfect :)
The only thing missing are some subtle ripples in the puddle. This can easily be achieved with a basic procedural texture.
For the last time, add a new texture.
Name the texture, Ripples and leave the texture type as Clouds.
By default the cloud texture is too large, so set the texture to 0.02 and increase the depth to 6 to create finer more detailed ripples.
In the Influence panel, check Normal and set the amount to 0.001. This will create very subtle imperfections across the plane.
Well... almost. If you want to push the scene further, why not give it a little Wow Factor ;)
I've added color correction, soft glow, vignette and depth of field.
Now it's finished!
As always I'm excited to see what you guys create, so feel free to post them below! If you know of any alternative methods to create puddles, feel free to share that as well :)