On the stairs in my house we recently added these carpet treads as one of our dogs was having issue with the stairs. Looking at the pattern on the ends, I though this would be a good experiment to see if I could scan a piece of one of these treads and create a carpet from it.
If you want to see some renders from Marmoset follow the link to my portfolio https://www.artstation.com/artwork/b1zbE
To start things off, here's the portion of carpet that was scanned and the crop area in Lightroom.
Here's a overview of the whole graph. now that it's done I could probably go back and optimize if by moving some of the switching I'm doing up stream.
The graph started as all my others do. Nine images, one Diffuse, eight light angles images. After the normal was generated a Smart tile node was used to adjust the scan and trim off a bit of the right edge.
Here's what the output of the tile node looked like. You can see the red square which is the edge of the texture and how it tiles.
Next was turning this piece of carpet into a full rug. To do that I used the Tile Generator node. The generator was set to a 3x3 grid with 3 inputs. The left and right sides of the rug was simple, the left input was connected directly and the right filters the same input though a transform not to rotate is 180 degrees. To create the center field of the carpet I mirrored the section that didn't have the edge pattern and used some clone patch nodes to remove symbols in the original texture. The nodes were then copied for the normal, I supposed I could have used the multi clone patch nodes... For the height map 3 textures were created off the the 3 normal map nodes.
After all the combining this is what I end up with for a Diffuse.
From the combined maps the rest of the channels were generated. The center looked a little too plain so I decided to clone the small brown symbol in to the center. Also I layered on a grunge map into the normal channel to add some wear marks onto the carpet.
And after all that we end up with this. You can see the bumps running the length of the carpet coming from the grunge map. It adds a little something to the material and hides some of the tiling issues :)
After I finished I started experimenting with different patters and ended up with 3 that I liked. To manages it all I ran all the final outputs into 2 switch nodes for each channel, then into a basic material and then into the outputs so I could easily switch between version to render the outputs. In the future I could wire all this switch nodes to a common function to switch them all from 1 parameter.
For the 2nd carpet version I took the original output textures and mirrored them to create a interesting pattern, this was then fed into a similar tile generator and reused the previous textures for the center of the carpet.
This is what the mirrored edge patterned looked like
And this is the final version of the second carpet. Still using the same grunge map to add some life to the surface.
For the 3rd version I used the edge patterns from version 2 and center carpet from version 1 but mirrored the original texture again with different settings to create a smaller strip that I used as a center stripe in the carpet.
Here's what the center stripe looked like.
And here the final third version.
I think these all turned out pretty good, some better than others. Now that it's done I think I could go back and simplify the setup so they all feed into 1 tile node and just switch the inputs.
That's it for now, Not sure what will be next but I think I'm done with carpets for a while. If you have any suggestions or ideas leave them in the comments.
Thanks for reading.














