Here's how to use textured materials in Rhino.
For this tutorial, we will be using a 3D model of the famous Barcelona Pavilion by Mies Van Der Rohe. I have also prepared several images that we will use as textures. You can download the model and the textures from the following link:
Download Rhino And Textures (4.2Mb .zip)
You will also see a couple of reference images of how the actual pavilion looks like. We will try to come close to these images in this tutorial.
Important note: If you are not sure what texture maps or UV mapping is, please make sure to read this article before you continue – otherwise you’ll struggle to make sense of this tutorial.
We will start by making the marble material which is so emblematic of this project.
Then we will assign that marble material to the corresponding layer.
Not quite there yet! The resulting map doesn’t look very well as we can see, and the reason is we didn’t do UV Mapping, so Rhino doesn’t know how this texture should be positioned on our model:
To make this map appear correctly, we need to define it’s size and position.
First and very important question arises:
In most instances, it’s good enough to just look at the texture image and estimate how big that image would be in real life. It’s something you’ll do a lot all the time, but sometimes you may need to be very accurate (like say right now), so here’s an explanation on how to calculate the very accurate map size.Spoiler: if you are not interested in this calculation, simply use the following size: 4.4 x 3.3m, and skip to video
We’ll take a look at the actual texture image, and the reference photo, side by side:
Our texture (on the left) has “2 tiles horizontally, and 3 tiles vertically“.
If we look at the photo, we see that basically 2 tiles horizontally almost covers entire pool, while 3 tiles vertically is exactly the height of the wall. I highlighted that in yellow. Now you see a “good” size of our texture.
If we now measure these dimensions on our Rhino model (using Distance command), we’ll see it’s about this size:
So we need to apply UV mapping with these dimensions.
Here’s how (note that I simplified in video and simply stretched the texture to the edge of the pool, which is slightly different than the reference photo):
Now we have successfully “mapped” the marble wall, meaning we defined the position of and the size of the texture map on that object. If you wonder what “Box Mapping” means, it simply means that we will project our map on our object from the 6 sides:
Another prominent material in Barcelona Pavilion is a travertine stone, which is used in floors, perimeter walls as well as the stone benches along the wall.
We’ll create a new material, call it Travertine, and apply to all these layers:
Note that I applied the same texture to Color and Bump slots – this will make the material slightly rough.
Of course, our travertine objects are not showing up the map correctly. Let’s UV map them all at once. Note that we don’t need to UV map objects one by one, if many objects share the same texture size, we can select them all and map them together.
Again, we need to determine how big our texture is in real life (and in our 3D model).
Again, you can skip the actual calculations and use the following values: 18×6.6m.
But for those of you who want to go pro soon, here’s the process (which is the same as calculating the marble size we did earlier).
Here’s a quick reference on how the actual pavilion looks (ok, maybe not exactly the same stone for the wall and the floor, but we’ll simplify things here):
Looking at the back wall in the photo, we see it’s roughly 3 tiles from the edge of the pool to the column on the right, which measured on our model is around 6m. Also, we see that the wall has 3 vertical tiles (and the height of the wall is 3.3m).
And et’s take a look at our travertine image we’ll use as a texture:
Since we have 9 tiles horizontally, this means that the size of this texture in real life would be 3 x 9m = 18m. Similarly, since we have 6 tiles vertically in our map the height of the map is 2 x 3.3m = 6.6m.
Now let’s map it all:
Note that I used CTRL+Click to select all layers using Travertine material and then right-clicked to open context menu from which I selected “Select Objects“. This quickly select all objects in these layers.
As always, before we jump into Rhino, materials and renderings, it pays off to take a look at some reference photos and analyse how the water looks like and why. Here’s one such photo:
From this photo, we can make following observations about water in this pool:
Based on this observation, we can make the following assumptions when making the water material:
This means that instead of modelling the full volume of the water and modeling pebbles, we basically just use one plane with one material we described as above.
Here’s how to do it:
Which creates the following effect:
Not looking bad for starter! Now let’s repeat one important thing.
Artists should focus on observing nature and what it looks like, not necessarily what it really is.
In our case, we “know”that water is transparent, and pebbles are below the surface of water, but if we just focus on what it looks like, we can come to conclusion that we can just use one simple plane with such a material that contains “part water”(reflective and have waves) and “part stones”(not transparent with recognizable texture).
What we have just created is an illusion that doesn’t exist in nature, but it’s a pretty convincing illusion that -more importantly- has saved us quite some time.
Now to improve on the illusion, let’s add waves.
As we said, we will add waves by adding an image to the bump map, to simulate the uneven surface of real water.
Note one important thing in the following video – I introduced new element “Repeat map” which allows us to have textures of different sizes on the same object:
In our case, our bump map is bigger than pebbles map – and changing UV Mapping would affect both (so we end up either with small waves or too big pebbles). “Repeat” interface that I showed in above video lets use fine-tune size for each texture independently and it means: “within the map size defined by UV mapping, “how many times will this particular texture repeat?”. If we use values bigger than 1, the texture will be smaller then UV map boundaries, and if it’s smaller than 1 – it will be bigger.
Here’s the final image, exported directly from the viewport, from Neon renderer: