Different environments require different textures, and even the same environment can have different conditions where the textures are required to change. For example, if you are creating a scene an outdoor scene of a wet day, then puddles are likely to form on the ground surface.
There are several methods to creating puddles in Blender, including using separate objects with high reflectivity or having puddles painted onto your material using a custom texture map made in Blender. To maximize the control of our puddle placement, we can use texture nodes to generate our puddles procedurally.
To create puddles procedurally, we can use a noise texture node or other texture nodes to generate patterns across the surface of our texture. Combined with a color ramp, these nodes can define the reflectivity across our texture using the roughness input of the Principled shader. The darker parts of the texture become more reflective and create the illusion of puddles forming on the surface.
As with many other tasks in Blender, creating the puddle effect in Blender can be done in various ways, and your workflow often determines which method you use. More artist Blender users will use the texture paint approach, while others will want a nondestructive approach to modeling in the form of procedural nodes.
Setting Up The Base Texture
As a pre-step for applying puddles to your texture, you will first need to set up the base texture of your material. Start by creating a new material using the principle shader as your primary node.
The principled shader has various inputs and properties associated with it, making it the perfect starting point for creating our PBR materials.
Depending on the shape of your surface, you may also need to ensure that you create a suitable UV map for that object.
When creating puddles, we usually work with flat surfaces or semi-flat surfaces like ground planes and roads. So do UV map should be a reasonably simplistic step in this process.
You can attach your base texture to your principle shader by adding an image texture node and connecting it to the base color of your principle shader.
Then click the open button and locate the base texture you want to use. They want different places where we can gain image textures, but our preferred choice is poliigon.com.
If you wanted to go full procedural, you could create your base texture using a variety of other texture nodes. For example, if you want to create a brick path, you can choose the brick texture node and connect it to your base color.
However, since our focus is purely on creating the puddles, we will keep everything else simple and use an image texture for our example.
It is also common practice to use a mapping and texture coordinate node so that you can move, rotate and scale your texture around your object’s surface.
Creating The Puddle Effect
Once you have your base texture, you will then be able to create a pattern for your roughness. This pattern will be used to create the puddle effect on your object’s surface.
The simplest way to do this is to combine two nodes, a texture node for the pattern and a color ramp node, to control the level of reflectivity using that pattern.
For our example, we will add a noise texture node and set the mode to 4D. We’re going to reduce the scale value and then connect the noise texture node up to the roughness input of the principle shader.
It is easiest if you view the results of our texture setup in the Material preview, where we have a pre-built hdri that will allow us to best view our reflectivity.
The surface of our texture isn’t quite there yet, so we’ll need to add our second node, the color ramp.
The purpose of the color ramp is to take the information from our noise texture node. And then converts the pattern into light and dark areas that can be displayed as the areas of roughness on our material.
How you set up the color ramp is up to you, but position it between the noise texture and the roughness input first and then determine where the colors will go on the ramp. For our example, we like the look where the two colors are close together in the middle of the color ramp.
We set it up so that black is the first color stop and white is the 2nd. In the 3D viewport, we can see that we now have puddles forming on the surface of our object. Or at least the illusion of puddles forming.
Ways To Improve Your Puddles
Viewing our test seen in cycles displays that it’s not entirely ready for production, so we can do a few things to improve the effects of our puddles on our surfaces.
Use Your Position Data For Your Puddles
We first recommend including a geometry node and connecting the position output to the vector input of your main texture. In our case, this is going to be the noise texture node.
Preview The Effects Of Your Nodes
To better view the effects your texture sets up has on your base material, plug the color ramp node directly into your material output.
This may make it easier to tweak the values of the color ramp node an noise texture nodes to create the puddle effects that you want.
Again, to control the falloff, make sure we have a close distance between the first and second color stops of the color ramp.
Don’t Use A Pure White Color For Reflectivity
Also, keep in mind that the second color should not be pure white, as your entire surface should be, to some degree, reflective.
100% want indicates no reflectivity, while 100% black on the color ramp represents 100% reflectivity.
All objects are at least to some degree reflective, so make sure that the second color stop is at least slightly grey.
Combine With A Roughness Map
Using the noise texture and color ramp nodes is an easy way to create the puddles on top of the texture, but what about the rest of the texture map.
Using a single color to define the roughness of the texture where there are no puddles is not a fully accurate way of creating a PBR material.
If you are using an image texture for the base color, then depending on where you got that texture from, you may also have access to either a roughness map or a gloss map.
The difference between a roughness map and a gloss map is that they operate in reverse. In practice, this means that when using a gloss map, such as in our example, an invert node is required to reverse the mapping of the node.
The best way to combine this roughness map with your puddle texture is to use a mixRGB node and set it to multiply. Use your roughness/gloss map for the color 1 slot, and then use the puddle texture set as the factor value.
The bottom color for this arrangement should be black so that the mapping will operate correctly. We set it to multiply since our roughness works in a 0 to 1 range, so the areas where we have reflected will be set to 1, and then the remaining area will be set between 0 and 1 depending on the roughness map and color ramp nodes.
Combine Your Puddles With Your Normal Map
Finally, you can combine your puddle map with your normal map for that extra realism. For any PBR material, you should be using either a bump map or a normal map, regardless of the base texture.
Even without directly connecting the puddle set up to your normal map, the appearance changes notably when applying the normal map to the material, especially in the areas where the puddles have been formed.
To combine your puddle map with your normal map, again use a mix RGB node and set the puddle texture as your factor and the normal map set to color one; for best results, set the mix RGB node to mix and not multiply, as we want to maintain reflection in the puddles.
The results are not quite accurate around the edges of the puddles themselves, so add a normal map node and use it as the second color input to display the puddle edges correctly.
Thanks For Reading
We appreciate you taking the time to read through the article. We hope you found the information you were looking for. If you are interested in learning more about the Blender software, you can check out a few of the articles we have listed below.