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
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 buy most a 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.
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.
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.
Now like any material, surface imperfections like smudges, smears, and scratches can take the realism to the next level and 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 overlayed some smudges and scratches to the roughness and normal channels. It's most definitely an optional step but in my opinion, is the icing on the already great cake.
This is a fairly complex method for something as simple as a floor but if you're interested in creating it I can only assume you already appreciate the benefits and have a reasonable working knowledge of Blender.
That said, if you'd like some assistance with this please give us a shout at customer support and we'll do our best to help.