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 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.

Adding reflections

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.

Adding specularity

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 :)

Adding ripples

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 :)

Russian Flag IconRead the Russian Translation

About Andrew Price

User of Blender for 9+ years. I've written tutorials for 3d World Magazine and spoken at three Blender conferences. My goal is to help artists get employed in the industry by making training accessible and easy to understand. I'm an Aussie and I live in South Korea ;)
  • Betaman156

    Not sure what he means by custom made puddle texture?

  • justin

    oh. and and get as crisp imperfections in the bricks. It’s more like big dents rather than small cuts like on Andrew’s

  • justin

    This is mine and I’m pretty happy with it. The only thing is when it renders the lower right side always gets really pixelated and I don’t know how to fix that

  • Kroopz

    Weird. I set up the mirror UV just the way you told to, but somehow it doesn’t apply for the puddles themselves, so instead I get a mirror stone surface with black stains on it instead of puddles. I’m using the 2.66a build, if that’s relevant.

  • David

    Hi. My plane is not reflecting the background environment! Can you please tell me what to do?


  • David

    Hi. I couldn´t find the tile options to tile the texture? can you please tell me where to find it?


  • KyleMorgan49
  • fergus

    cool, I made a very cool looking puddle. I also have followed others such as the underground railroad. I made another really cool railroad. this guy rocks.

  • Fergus

    sorry fixed it.

  • Fergus

    I am stuck on the bit where you open a background image. the world isn’t showing the image, just grey.

  • fergus

    i can’t open an image for my texture. can someone help?

  • Paul

    I like this tutorial. Very inspiring. But please enlighten me to how to:

    ‘rotate the UV coordinates, so that the scaling matches the object’

    Thank you.

  • Coleen Frazer Hambrick

    I’m new to the Blender community… well, sort of. A couple of years ago someone introduced me to Blender but it looked so complicated I gave up after a few attempts. Recently I had the inspiration to try again and have become a Blender sponge! I’m even “seeing” the “real world” on a grid!

    I have a story in mind to create with Blender, and creating this puddle is the first step in creating the background and environment my characters will be living in. Thanks to Andrew Price to take the time and write these instructions. It took me a couple of times to get this result, and I’m very happy with it. There are a couple of things I’m going to do differently, one of which is choosing a smaller floor pattern.

  • Francisco Martinez

    How silly, I forgot to put the link

  • Francisco Martinez

    I liked more this one.
    Just changed the position of the camera, and some nodes

  • Francisco Martinez

    Here is mine!
    Any hope Mr. Price can give it a look?

  • maagi

    Hello, here’s my render
    Thanks for good tutorial Andrew.

    • Francisco Martinez

      have you guys tried to add the “wow factor”?

  • ferry hidayat
  • Alex

    For some reason, after adding the bumpmap, the tiles become very brown and less pixelated

  • Mark LaBarr

    When I try rendering just the Plane with the texture, I get no reflections from the Lamps.

  • TheBelin

    Great quick tutorial covering a range of advanced effects! I found this really useful in my own quest for more advanced Blender knowledge.

  • Phil

    I can’t find the Puddle texture anywhere in this tutorial. Which image do I click?

  • David

    what is the “puddle texture”?

    • xDevilzDummyx

      Try clicking the image, it will link you to a texture picture which you can save by just right clicking “save image as”

  • Eric Kirk

    This guy is good. My only problem is there is a lot of assumed knowledge on buttons so I got stuck right at the beginning when he said “First split the view port vertically and change the new view port to a UV Image editor.” I looked all over, toggled through the display and was essentially lost and could not go further.

    I really want to understand how the fluid works too.


    • xDevilzDummyx

      i assume you know what what is 3d viewport, in the viewport there at the upright corner, hover your mouse over it and it will show u a “plus sign”, left click on it then pull either to the left side or pull down. it will immediately split a viewport , like a second workplace for you. to change to UV image editor go to the left lelow corner of the viewport and click on a little small cube icon, it allow you to change the type of workspace you want. which fluid do you mean? the fluid simulator or about this tutorial?

      • fergus

        thanks whoever you are, and thanks whoever asked. I am officially getting on with the tutorial.

  • tarik bagriyanik
  • Marc

    Hey Andrew,
    first of all your site is amazing! Very nice tuts here!
    But i’ve a problem with this tut.
    Blender doesnt render the scene wich is in the 3D View. I’ve followed all the steps but Blender doesnt render the texture with the black spots, i think its just not right adjusted because in the upper right corner you see a bit of the black spots.
    Can you help me?

    A screenshot for better understanding:

    Thanks, Marc

    P.S.: Sorry for my English, i’m german. Hope you know what i mean :D

  • Kyle

    Cycles, scheduled to be released in 2.61, does not currently support the “Image or Movie” texture. If you want to hook up the camera directly to a TV in the same scene, you have to use Blender Internal.

  • samw
  • spoo

    it works great!

    thank you

  • bc

    why does my city scene appear behind my street, my street is opaque so nothing gets through Help plse

  • Pingback: Fireworks | SHiNKiROU Blog

  • hanyc

    This is my picture. Please help! What’s wrong?

  • hanyc

    Anyone please help! What’s wrong with my picture? i follow the steps (not until the part ‘creating bump map’) Please help!