Creating a realistic slate roof.

This tutorial doesn't go into detail much, but rather explains you the process of creating a slate roof and what tools are used. 

I started in 3dsMax creating a box with enough subdivisions. Making sure each subdivision is of equal size on every axis.

I then created a stamp image using photoshop and filter forge, that could be used to achieve the chisel effect slate roof tiles have. 

The stamp image created in photoshop. You can download a low res version of it here.

I send the box I created in 3dsMax to Mudbox and I added a new sculptlayer and 3 new subdivision levels. Making use of the imprint tools and the stamp I created in photoshop I started to add some rough detail first.

It's important to work with the sculptlayers because they give you the flexibility to go back or even reduce the impact (by playing with the level of strength) of the layer on the object. In the end I had about 14 layers with strengths varying from 20-100.

When you're happy with the end result you might consider reducing the mesh. In my case I had to reduce the mesh a lot. I had about 2.000.000 polygons for that one rooftile. Knowing that a roof consists of hundreds of tiles, I decided to reduce it to about 80.000 polygons. 

I created about 4 different roof tiles, with each of them reduced and send to 3dsMax. In 3dsmax I went into polygon mode and looked at the bottom of the roof tile. With 'ignore backfacing' turned I made a selection of polygons that aren't visible from the top or sides. And deleted them. I then made sure the pivot points of each object were centered.

The actual roof is created with RailClone from Itoo Software. A very good plugin with good customer support as they helped me out optimizing the roof.


I proceeded with extracting the outline of my roof. As you can see, all are attached into 1 spline, which is used as a clipping area in RailClone.

The spline is rotated according to the roof's slope but it's not necessary, Railclone only uses a projection of the spline on the XY plane. The slope of the roof is determined by the X rotation of the Railclone array.

Using the spline I created earlier as a base object for my roof I created a 2S Array and 4 mesh objects. I then duplicated the mesh objects and scaling them 50% so they could be used as the first tile in a running bond pattern. All of the mesh objects also have a random rotation/scaling in their properties.

These meshes were mirrored each 3 times (X, Y and XY) and together with the original plugged into a randomizer. This also for the scaled version of the mesh objects. Those 2 resulting randomizers are plugged into a sequencer to alternate between the two to create the running bond. Also a conditional operator was added to detect the first row and to transform his height and offset separately so he doesn't get cut. Lastly I applied a random material ID transform so I get more diversity in my roof material.

3 Numeric parameters were created to be able to control the rotation of the array; and the offset and height of the last row.

3 Numeric parameters were created to be able to control the rotation of the array; and the offset and height of the last row.

This results in a roof that shows no repetition in his geometry because of the random rotating, scaling and mirroring of the meshes. In combination with 5 different materials, made entirely of procedural maps, you get infinite possibilities. 

One of the 5 materials used. Consisting out of a base layer and 5 coat layers. With the new GGX this could've been 2 layers less.

Onto the material creation. I would suggest following Grant Warwick's course on material creation as he inspired me (and taught me) to use procedural mapping. Also at the time of creating this material I've made use of the layered reflection technique he promoted. Alas (or not) this technique is now sort of obsolete with the new Vray 3.1 GGX implementation and this material could've looked a lot more simple.  

The material consists of a base layer and 5 coat layers, two of which are used for layered reflection. One might say this is a bit overkill but every little bit helps the realism. The 3 other coat layers create dirt or discoloration. 


Let's have a closer look at the base layer:


This is a composite map with as base color a BerconNoise map with 2 VrayColors for bigger color variation. 2 different VrayColors are layered on top of that masked with, a single BerconNoise and the other a composite of 2 BerconNoise, for even more detail. 


The reflection slot is a rather simple setup because there's a lot of detail in the mesh already and variation in reflections will also be achieved by the dirt coat layers and making use of bump mapping. As taught by Grant, it helps analysing reference images of the material you're trying to recreate. Looking at the colours of the reflections to see which colours are absorbed and which ones are reflected can give you a good indication on how to split them up in the output color channel of your faloff map.


Finally the bump slot has a berconnoise map with some small noise to define some little details. Because the geometry itself is already quite detailed, this isn't very necessary but for close ups it can make a difference.

The diffuse composite map