if you need to repeat a texture multiple times across a large plane, you end up with very obvious tiles. if you have a set of 10 textures that are seamless but varied (say the edges match, but the inside is different), is there a way to randomise the placement of those tiles in blender, so that you don’t have that obvious repeating pattern. In 3d max, as far as I know, you can use a BerconTile to do this.
I am not sure, how to achieve this with cycles nodes. We lack a random node, which produces something like “cellnoise” or “hashnoise”.
You can achieve it with OSL. Three images, each contains number 1 to 3.
The shader; a rough sketch for 3 image textures. (Texture names stored in T0, T1 and T2.)
shader random_tiles(point PP=P, string T0="", string T1="", string T2="", output color C=color(0))
{
point Coords = transform("shader",4*PP);
float pU = -1*Coords[0];
float pV = Coords[1];
float tile_id = floor(3*cellnoise(Coords));
if (tile_id < 1)
{
C = texture(T0, pU, pV, "wrap", "periodic");
}
else if (tile_id < 2)
{
C = texture(T1, pU, pV, "wrap", "periodic");
}
else
{
C = texture(T2, pU, pV, "wrap", "periodic");
}
}
1 Like
See this thread for a node approach.
You can configure the brick texture to generate randomly “shaded” bricks. If you pass the output through a noise node (with parameters 42.5, 0, 42.5), you get a random color on those bricks which you can then multiply and other maths stuff to influence the coordinates you pick your texture from.
1 Like
Thanks for the post. I will play around with this solution and see if I can get it to work for me.