---
title: "Creating a Wooden Floor"
canonical: "https://rmanwiki-27.pixar.com/space/RU/393805842/Creating%20a%20Wooden%20Floor"
format: markdown
---
![RenderMan_WoodFloor2.jpg](media://76aa4253-4ca1-458e-bb73-7bb99ad17ded)


In this lesson, we’re going to learn how to harness the power of the PxrRandomTextureManifold to randomly assign a set of 10 floorboard textures to the geometry, with each board having its own unique random flip, orientation, and position offset.

Whilst this lesson shows you how to recreate floorboards, the technique can be applied to many other creative uses, such as wall tiles, stones, roads, and other situations where you need to place textures on a variety of objects randomly.

---

> ℹ️ <span style="color: #ffffff">**Initial Setup**</span>

Let’s start by having a look at the setup in Maya.  We have a set of individual floorboards, each one with the same UV tile.

![RenderMan_WoodFloor_MayaSetup_01.jpg](media://1d761152-b3bb-4673-91fb-e5064d1d9423)

Next, let’s look at the textures we’re using.  These were kindly supplied to us by our friends at Texture Supply.  In this example, we’ve used their beautiful 5k Brown Ash 40.8x6.8cm texture pack.

![RenderMan_WoodFloor_MayaSetup_02.jpg](media://e85534ee-71bb-4689-8287-d4361ea2bb44)

Let’s start assigning these textures to our floorboards.

If we begin by simply adding a PxrTexture node for the Diffuse color on our base PxrSurface, we can see from the image below that it’s not very random at all.  This is not the look we’re going for.  There’s not enough randomization in the placement of the textures on all the floorboards, and they all look very similar.

![RenderMan_WoodFloor_MayaSetup_07.jpg](media://bc86f3e0-241f-4e64-ba2d-37daefc1d5ca)

The trick here is to use a combination of the PxrMultiTexture node to load in a set of 10 textures and then a PxrRandomTextureManifold to art-direct the randomness of each texture and UV placement.

![RenderMan_WoodFloor_MayaSetup_09a.jpg](media://7085a5c8-7f15-4075-b94e-7f989efdf0e7)

![RenderMan_WoodFloor_MayaSetup_010.jpg](media://e7575120-be9c-4cff-bb50-511f8d0d0df0)

As you can see from the render above, our 10 floorboard textures are now more randomly distributed.

But we’re not done yet… we can now adjust the Randomize parameters to randomize further.  These settings are purely there for you to make the look you’re going for, so there are no right or wrong values here.

![RenderMan_WoodFloor_MayaSetup_011.jpg](media://874915a5-35dc-426b-8816-2f34bbd45ad1)

A few key parameters exist inside the PxrRandomTextureManifold 

**Number of Textures :** This determines how many textures to use from the PxrMultiTexture files

**Texture Order : **This controls how the textures are shuffled from the PxrMultiTexture files

**Random Source: **This controls which geometry ID is used by the PxrRandomTextureManifold 

---

> ℹ️ <span style="color: #ffffff">**Pushing the Randomization**</span>

Now that we’ve got our diffuse color looking how we want, we can push the realism of our floorboards shader further. 

Let’s have a look at the final shader used in the final render.  Several extra nodes have been added

- The diffuse textures have also been plugged into a PxrBumpMixer, then into the diffuse bump, to add a slight bump to the diffuse layer.
- The diffuse texture has also been used to drive the Primary Specular.

![RenderMan_WoodFloor_MayaSetup_013.jpg](media://c072f616-5954-4b9d-9519-4af6db39e339)

They’re starting to look good, but they all look the same color.  In reality, each board would be a slightly different color.  Either due to the manufacturing process, some have faded over time, or become dirtier and dustier.

Luckily for us, more randomization parameters sit inside the PxrMultiTexture node.  

Here we are randomizing the Hue value of our 10 textures.  As you can see, each floorboard now shows a slight shift in hue.  

Setting the Saturation mode to Subtractive means that each texture will have a random hue value that is LESS than its original hue.  Again, this is a creative choice as to what to set this value to, but here we have pushed it a little higher to demonstrate the effect

![RenderMan_WoodFloor_MayaSetup_012.jpg](media://800f331a-dc03-4c31-9c8a-d4050492ab4c)

---

> ℹ️ <span style="color: #ffffff">**Adding Varnish**</span>

We want to give our floorboards an extra varnish, and we can do this easily with the Clear Coat layer in the PxrSurface.  If you’re using Lama, this can be achieved by layering a tinted LamaDielectric node as the base layer and then adjusting the Layer Thickness parameter on the PxrLayer node.

Here, a Clear Coat layer is added with the default values.

![RenderMan_WoodFloor_MayaSetup_014.jpg](media://9489913b-4c66-4c3a-ad9c-da6dd29ce1f6)

Normally, when you buy a wood varnish, you can specify its color, which provides protection and color to unfinished wood.  We can replicate that easily.

All we need to do is add some Layer Thickness (imagine how thick the vanish has been applied to the wood), and using the Absorption Tint, we can introduce some color into our varnish.

![RenderMan_WoodFloor_MayaSetup_015.jpg](media://8982860c-6dfa-49d9-b24c-7e5bb0e246b9)

Nice … now we’ve turned a boring, dull wood into a nicely colored varnished wood.

Finished?  Maybe … but the roughness of our vanish is very smooth and perfect.  We ideally want to add some roughness to this varnish to enhance the realism of where it’s been damaged, scuffed, and scratched.  Again, this is a creative decision, so use your reference images to dial in the look you are going for.

In this example, we have added a roughness map with wipes, scratches, and minor imperfections.  We’ve used a PxrRoundCube node instead of a PxrRandomTileManifold because we don’t want the imperfections to vary across boards.  

HexTiling (rather than tri-planar) mapping has also been used in this example as it is perfect for seamless tiling of maps across large areas without seams or visible repetitions.

![RenderMan_WoodFloor_MayaSetup_017.jpg](media://278f15d0-3d4e-4c44-a2d3-389baaee5cce)

And here’s how our wood now looks.  It’s a subtle difference, but subtly is the key to realism.

![RenderMan_WoodFloor_MayaSetup_018.jpg](media://cfd8ac56-f321-4dfe-9a45-47165d97024c)

Phew … we’re at the end of this lesson, but before we end, there is one more thing to add.  

The camera angle when creating an example like this is essential.  The lower the camera and the higher the grazing angle, the more pronounced your transparent coat layer will appear, so you might need to adjust it accordingly.

---

> ℹ️ <span style="color: #ffffff">**Further Refinements**</span>

- Try using the diffuse map (or an imperfection map) to drive the Layer Thickness of the Clear Coat layer.  This can be used to add extra realism when you want to scratch away the varnish coating to reveal the raw wood underneath.
- Add a bump texture to your Clear Coat layer to add further bumps and imperfections
- Make a Bump2Roughness map of your diffuse texture map(s). This can then be used to drive the roughness, bump, and anisotropy of your floorboards.
- Scatter some tiny dust particles and hair curves over the floor to add a layer of dirt.
- Add an imperfection map over the top of your Diffuse or Clear Coat to add more damage.
- Use the imperfections on your floor to tell a story.  Is it new or old?  Has a chair been heavily dragged across the floor, causing a long scratch and dents?

---

![RenderManUniversity_logo.svg](media://b5d12b54-a669-4a38-9768-7d496c20fbf7)