11
$\begingroup$

Is it possible to create this parquetry pattern by modelling only a single tile and using some system of array modifiers, and then applying a single material, that gives each tile a similar, but individual, pattern? And for clarity: each rectangle is one tile, and each square is made of four tiles. I've intentionally exaggerated the edges of the tiles, for visibility.

enter image description here

This is the setup I have at the moment.
enter image description here
I'm quite happy with the overall looks of it, but it gives a seamless pattern over the entire floor, and I want each tile to have an individual variation, like this.
enter image description here

$\endgroup$
6
  • $\begingroup$ Can you read your own node image? I cannot. I do not know how to ask the site to show the original image. Do you know? $\endgroup$ May 19, 2015 at 1:48
  • $\begingroup$ @atomicbezierslinger right click --> view image $\endgroup$
    – Chebhou
    May 19, 2015 at 1:57
  • $\begingroup$ @Chebhou. Which browser? $\endgroup$ May 19, 2015 at 2:01
  • $\begingroup$ @atomicbezierslinger I made the image a clickable link now. Clicking it should take you to a larger view of it. $\endgroup$
    – user7952
    May 19, 2015 at 2:04
  • 1
    $\begingroup$ @atomicbezierslinger Click the "Edited ... ago" link and view my last edit. :) $\endgroup$
    – user7952
    May 19, 2015 at 2:19

3 Answers 3

15
$\begingroup$

With one material shared between all the rectangles, you can add randomized attributes, as long as each rectangle is a separate mesh object.

The trick is using the Object Info Node with the Random output as a factor in texture position as well as in a colour overlay.

Here's the modified Material node tree. All collapsed nodes are unchanged from the original material from the original question.

alt text

Here's a sample screenshot of the single material across the 48 rectangular meshes (16 groups of 3). It demonstrates the randomization of the colour overlay as well as the shift in Texture coordinates.

enter image description here

Randomizing Colour

enter image description here

The colour overlay is easier to explain. You take the Random value into the Factor of a Colour Ramp and then mix that over top of your base colour. The Random value will apply a different position value from the colour ramp to each of the mesh objects, giving you the colour variation you need. Adjust the colour ramp to make it as subtle as you want.

Randomizing Texture Position

enter image description here

This part is a little trickier. Essentially we want to modify the X and Y values of the Texture Coordinate. It's important to know that Adding to these values moves the textures, and Multiplying a number by these values Scales the Texture Coordinates. We don't want to scale here, we just want to randomly change the X and Y values of the coordinates.

The problem is that we can't do this with the Mapping node, so we need some math nodes.

  1. First we take the output of the Mapping Node and split the XYZ values with a Separate XYZ node.
  2. Then we add the Random value to the X and the Y values
  3. Then we use the Combine XYZ node to combine the altered XY values with the unchanged Z value.
  4. At this point we pipe the vector output into the rest of the node tree as was originally set up.

This way we are adding a random integer to the X and Y value and shifting the texture coordinates for each mesh that uses our single material.

Note: In this example I did not randomize the Glossy material, although you could certainly do that as well.

Tip: If you want to learn more about modifying texture coordinates, I would highly recommend Bartek Skorupa's video: "Manipulating Texture Coordinates Like A Boss"

$\endgroup$
5
  • $\begingroup$ Looks good. Really good. I upvoted now, and another +15 will be coming your way after I've confirmed it, unless something even better shows up. My mind was locked on using array modifier(s), and I didn't even consider making each tile a separate mesh. (And my bed is still shouting)... $\endgroup$
    – user7952
    May 19, 2015 at 4:21
  • $\begingroup$ You will still want to use the array modifier to create the quantity of tiles you need, but you'll have to apply it to get them all as separate objects. Without applying array, we don't get access to the Object Info Random value. $\endgroup$ May 19, 2015 at 5:24
  • $\begingroup$ I figured it out, and here's a render preview. I've only done the coordinate randomisation, not the colour. I'll get to that. I created one tile, then a plane with four groups of four rectangular faces. Then applied an array on that plane to get the needed number of tiles. Finally DupliFaced the tile on the plane. It's perfect. Thanks. $\endgroup$
    – user7952
    May 19, 2015 at 5:30
  • $\begingroup$ And here's my floor. The ball is just there to try the reflections. I split the material in two. The diffuse one for the tiles, and the glossy one I mixed with a glass shader for a plane ever so slightly above the tiles. The artifact in the lower right is a reflection of the light source. Thanks again. $\endgroup$
    – user7952
    May 19, 2015 at 6:30
  • $\begingroup$ Also if you apply a dirt texture and map it by location, you can have a more variation for each tile, but also have a something that ties them together as well. $\endgroup$ May 19, 2015 at 6:41
10
$\begingroup$

Using OSL you can do this with one script node, this script was originally a renderman shader. The drawback with OSL is no GPU support.

enter image description here

Script can be downloaded here.

And the settings used in the sample -

enter image description here

$\endgroup$
2
  • 2
    $\begingroup$ I've downloaded it and just did a quick try. Really good. But for now I'm going with the already accepted answer. The main reason being that I've already implemented it, and imported the floor into the flat I'm working on. I'll definitely save for possible future use. Thanks. $\endgroup$
    – user7952
    May 19, 2015 at 11:17
  • $\begingroup$ This is a handy solution, however there are some caveats. OSL scripts often take longer to render then simple mesh solutions. Also, with a texture only solution you don't have some of the advantages of the geometry edges between the tiles. If your tiles are very shallow this may not be a problem. $\endgroup$ May 20, 2015 at 19:00
10
$\begingroup$

Particle System Particle Info Node

Provides [Index] value for your Convenience and Creativity

  • Particles. Particle System. Particle Info. Since the particle info node will give you [index], you can base texture coordinates parameterized/uniquely to the tile. This includes 90 degree rotation. Particle System Settings depicted below. The [index] can be used with math nodes including random numbers. Gain and Bias.
  • With a Particle System you need only two planes. The Particle System itself and The repeated object particle.

  • Particle system result with two textures, selective rotation, color progression, texture repeat.

enter image description here

Animation Ready

enter image description here

Progressive Rotation via [Index]

90 Degree Rotation along Green to Blue Diagonal

enter image description here

Particle Info Node Close Up

enter image description here

Particle system result

  • First Object Particle focus.

  • Image Below.

enter image description here

Particle System Full View

  • Illustrating Color Progression based on Particle Info Index. This correlates with the color ramp node depicted in due time.

  • Image Below

enter image description here

Particle System Close Up

  • Illustrating Alternating Texture XY Coordinates.

  • Image Below

enter image description here

All the convenience of a Blender Particle System

  • Emitting all particles at the start of scene with a long lifetime will give the static quality.

enter image description here

Condensed Noodle Soup

  • Look No Groups

  • What a Mess!

  • Please never arrange your noodles like this

enter image description here

When you grow tired of that technical floor, Add 2 more math nodes and a new texture to get something like this.

enter image description here

This is easy because the particle system will produce a predictable value in the particle info index.

  • Ordinary technique. You can introduce non continuity by taking 3 * 3 = 9 squares of the wood texture. 6 * 6 = 36. So some viewers might not notice the repeat. Level of Detail.
$\endgroup$
6
  • $\begingroup$ I'll look into it to morrow... Or rather later today for me. It's 4 in the AM here, and my bed has been shouting at me for hours. $\endgroup$
    – user7952
    May 19, 2015 at 2:06
  • 3
    $\begingroup$ Careful .... Blender can be certainly be louder. $\endgroup$ May 19, 2015 at 2:16
  • $\begingroup$ Also a good one. But how can I rotate every other group of four (or any number) tiles by 90°? Look at the reference image and the two renders I posted in comments to @ToddMcIntosh's answer. $\endgroup$
    – user7952
    May 19, 2015 at 11:24
  • $\begingroup$ @SixthOfFour . Please see above image with rotation and 2 textures. Use a second texture, composition, or math nodes to rotate. My goal was to provide a starting point for many different people. You have a very fitted solution with 48 meshes. I have been meaning to do this for a while so you gave me a nudge. Thanks. I have take artistic or technical license. Composition of particle systems is something I might explore. $\endgroup$ May 19, 2015 at 19:31
  • $\begingroup$ @SixthOfFour. Please place your solution images in your original question so others can see, if that pleases you. $\endgroup$ May 19, 2015 at 19:34

You must log in to answer this question.