How to create beautiful modeled flooring in Blender
In this article, we’ll go through how to create modeled wood flooring using a combination of the FloorGenerator addon, Poliigon's Wood Plank Generator and a custom mixing nodeGroup.
Modeled flooring has many advantages over using a material. There's no visible repetition regardless of the surface area, excellent memory usage (compared to trying to get even close, in terms of detail, with a material and displacement), and greater control over the floor as a whole.
But like anything, all these advantages must have a disadvantage - otherwise it would just be ‘the way to do it’. In this case, it's complexity and time. But, if you want the best possible results, then this article will explain the process, step by step.
What you'll need
The Floorboard Generator addon for Blender to create the physical flooring model.
Poliigon's Wood Plank Generator, a .sbsar for creating the plank textures.
The PlankCombiner nodeGroup I put together for creating the final material.
Step 1: Generate your flooring
Install the Floorboard Generator addon via the Preferences menu, just like any other Blender addon.
You can access the addon from the Sidebar (N key by default) within the Viewport, and the flooring will generate from the 3D cursor. There are a number of values, but most are self-explanatory. I'd recommend using real-world plank sizes, if you have that information to hand - and note, there is a Random Seed value for testing different layouts within the parameters you've set.
Once the flooring is complete, fills your room, and has a layout you're happy with, tab into Edit Mode, select everything, press U and then 'Reset UV's'. This is an important step, to make sure our material works perfectly with the new flooring.
Once you've completed these steps, you should have something similar to the picture above.
Step 2: Creating the textures
Our Wood Plank Generator, a Substance .sbsar, is very similar to our Wood Flooring Generator.
You can create the same huge variety of wood types, only with the focus being on exporting planks rather than square textures. As we need to export these textures, please use Substance Player to load the .sbsar.
There is an additional parameter section called ‘Plank Parameters’ that allows you to create lots of variations of the same type of wooden plank. The more you create, the more variation your flooring will have. I'd recommend at least 4, however the nodeGroup provided for this can take up to 8 different texture sets.
The most important setting here is to get the dimensions correct. Plank Width is easy - set that to whatever the width of your modeled planks is. The Length, however, is a multiplier value, not a physical measurement. So, calculate what the ratio is for the length and put in the correct value.
(Hint: If your planks are 1m by 0.2m, your plank would be 5 times longer than it is wide, so the multiplier value would be 5.)
Once you've created a wood style you like, export a plank (you only need Color, Roughness, and Normal maps). Then, adjust the Random Seed Value above and perhaps the Sawing Radial Position, then repeat.
Keep doing this until you have at least 4 unique sets of plank texture sets of whatever wood style you've chosen. I'd recommend naming these in a sensible way, so it's easier to keep track, WoodOakPlank_1, _2, etc.
Step 3: Setting up the material
Back in Blender, make sure you've downloaded the PlankCombiner nodegroup and then using File > Append, locate the plankcombiner.blend and add in the PlankCombiner nodeGroup from the NodeTree folder.
Now, with the Floor Select, create a new material and press Shift+A in the node editor, and find the PlankCombiner nodeGroup under the 'Group' submenu.
It's now a simple - if not laborious - matter of just loading in your color, roughness, and normal texture maps for each plank you've created. Make sure each is mapped to 'UV' via a texture mapping node and that each has a normal map node connected to the normal map.
Then feed each texture map into the correct input of the NodeCombiner. The first plank in the P1 inputs, the second into the P2 inputs, and so on.
Now, all that's left to do is set the Plank Value of the nodeGroup to the number of planks you've used and you're good to go.
You can also cycle through random layouts with the Seed Value.
Optional Step 4: Imperfections
Like any material, surface imperfections like smudges, smears, and scratches can take the realism to the next level. As the PlankCombiner outputs a single color, roughness, and normal channel, it's super easy to add those in, just like you would with any other material.
Just be sure to either use generated co-ordinates, or to create a second UV map, as the primary UV map won't be suitable.
I won't go into detail in this area, but to give you a rough idea of what I used for my flooring, here are the Imperfection nodes I used:
In summary, I used a Random Per Island output from a Geometry Node to make some color and roughness variation per plank, and overlaid some smudges and scratches to the roughness and normal channels. It's most definitely an optional step - but in my opinion, it’s the icing on the already great cake.