There are two methods we'll take a look at here, an easy one that relies on adding a normal map to the original surface and a more complex one that instead uses adaptive displacement on a separated mesh.


Easy Method

Using a simple normal map is more suited to objects that won't be the main focus of your scene, perfect a background object or something similar.
It lacks the detail of the displacement method but has almost no impact on render times or resource use.

We'll assume for this that you already have an object with a simple glass shader applied.

Steps

  • Load in one of the normal maps from the droplets .zip folder. I went with 16bit for added detail though the standard one would work just as well.

  • Add in a Normal Map node.

  • Connect the normal map to the Normal Map node and then connect that node to the normal input of your Glass shader (See above.)

  • Finally, connect up the usual Texture coordinate and mapping nodes so you can control the scale of the texture.

  • The strength value of the Normal Node will control the strength of the effect.

Advanced Method

While more complicated and heavier on both render times and system resources, using adaptive displacement to add droplets to an object looks a lot better if the object is a focal element of your scene or even if it's something that is close to the camera.

Steps

  • The first step is to go into edit mode, highlight all the geometry that is going to have condensation, and then press 'P' and select separate by selection. This will isolate the geometry for us into a new object.

  • For the new object, copy the glass material but rename it to condensation. Leaving the original object using glass.

  • Set Blender to the experimental mode from the render panel.

  • To the condensation object, add a Subdivision modifier, set it to adaptive and 'Simple' so our object's shape isn't affected by the Subdivisions default smoothing.

  • Then under the material tab, navigate to settings and set displacement type to 'Displacement' from its default of 'Bump'.

  • Load in the displacement texture, connect it to a displacement node, and feed that into the materials displacement output.

  • Create and connect the normal coordinate and mapping nodes.

  • Load in the Alphamasked texture, we'll use this to give our condensation a different IOR value from the glass areas. This is an important step to really get a nice result.

  • Create two value nodes, one set to 1.45 (the default IOR for glass) and one to 1.1 (The IOR of water).

  • Mix them via a Color Mix node, using the alpha output of the alphamasked texture as the fac value for that mix node.

  • Finally, feed the output of that mix node into the IOR value of the glass shader.

  • The mapping as always can be adjusted via the mapping node and the strength of the displacement is controlled via the Scale value of the displacement node.

Did this answer your question?