Wave modifier and workflow for simulating real world windows?

You have to use the object info node output random. Make sure that your windows are different objects or instances(array for example)
Plug the random in a multiply… choose a number as coefficient multiplicator then put the result in a mapping node (position). It ll randomise the texture coordinates by object. And voila.

By_Objects_Mapping_Random.blend (745.5 KB)

1 Like

To avoid making many objects it is possible to put random color into specific “vertex color” layer for each window face and use that color as a additional seed for wave/etc texture

yes indeed. But in this case it seems that an array will be suffisent for the windows recurent model.

Thanks guys!

@skuax, a thousand thanks man, really appreciate that!

As an aside: i’m also learning Unreal Engine and i truly wish the people on their forum had the same generosity and good spirit that i constantly find among Blender folk!

1 Like

@IPv6, any chance you could make me a one minute example of that?

this hard to fit into one minute :slight_smile: you can fill vertex color with random colors manually of via addon like this - Add random vertex colors (to create variation leaves for example) - scroll to the end for 2.8. or google for similar addons, there are many

Then just use “Attribute” node in material and wave/magic/etc texture in conjunction with “Geomentry” node. “geometry->position”+“Attribute->color” -> Texture Position input and use outcome for displacement

You can also use node to generate a grid if your windows are simply a plane and are all the same dimensions:

Thanks all, lot’s to investigate this evening.

One more question if you don’t mind: i’m an audio engineer by trade, so i’m used to thinking about “signal flow”.

For the array solution to work, the array must first be applied before the material. Anyone know of any resources that explains the flow of the data?

I mean, are the tabs on the left of the properties, going top to bottom, actually the “signal flow”? Actually that wouldn’t make sense with the render tab at the top!

Or is this a weird question?

Can you change the order? So, first material, then array?

It’s just because we trust that we have got nothing to loose and everything to learn.


In your example blend file, could you please explain the purpose of the multiply and combine nodes?

I copied your setup, but substituted a numbered 10x10 matrix of numbers JPG texture so i could easily see what was going on.

It seems to me to nicely randomize the position of the texture without the need for the multiply / combine nodes

EDIT: when i delete the mult / comb modes from your blend, it has a different effect, then you do see the noise pattern continue from one window to the next. The difference is in my setup (with 10x10 matrix) is i’m using a color map whereas you’re using a bump map. I don’t get that (why the color map randomizes but the bump map doesn’t)


The multiply is used to increased the position difference. The random socket output a number from 0 to 1 but moving the coordinate by that little amount can not be enough to break the seamless nature of the noise. So by multiplying by a large number, it ensures that it is using a completely different place of the noise and thus increases the seams.

The combine node is there to convert the float value of the random socket to a 3D vector since this is what is expected by the Mapping node.

Could you share your file to see what is going wrong in your node setup?

1 Like

Thanks, i think i’m starting to get it. Sorry, i closed it without saving so i don’t have the blend file!

Sorry, just one more question and then i’ll leave you guys in peace!

In the vid below, notice that the materials scroll ever faster in the Y axis as you go from left to right.

Any idea why this is?

scroll_blend.blend (714.3 KB)


Thx for the explanations. I was not in front of any screens last hours.

It’s because the object (not so) random value is bigger.

OK, but i would expect it to send a random value that’s has a similar amount to each object … but instead what it seems to be doing is:

Object 1 = random value 1
Object 2 = random value 2 + random value 1
Object 3 = random value 3 + random value 2 + random value 1
(perhaps its not adding, maybe it’s multiplying 1 x 2 x 3, i’m not sure)

Is there a way to ensure each object gets its own random value without this behaviour? (so, each object gets an approx. equal but random amount of vector shift)

The random values are not added to one another.

What is happening is that:

  • random value object 1 = 0.2
  • random value object 2 = 0.4

So when you multiply, the position of the second object will appear to go faster.
If multiply by 2:

  • obj1 = 0.4
  • obj2 = 0.8

If multiply by 3

  • obj1 = 0.6
  • obj2 = 1.2


If you want to make them move the same way, you need to add another vector that will offset each UV the same way.

I changed your nodes to add the offset mechanism (the new nodes are in the frame).
Simply play with the “Combine XYZ” node value to move your texture.

Ahh, many thanks dude, that makes sense!

Hi folks,

OK, so the array thing works great. But how do you do it when you can’t use an array?

For example, imagine you have a space-ship that looks like it’s been welded together from plates. So, it’s not smooth, you want to see the hard edges and joins between plates. Now, you want to add some roughness to each plate. But the roughness shouldn’t flow from one plate to another. And also not right to the edge of each plate (the “weld” should be smooth or at least have a different kind of roughness).

How do people do this kind of stuff? Sorry, this is probably getting into advanced topics above my skill level, just curious. I know @IPv6 mentioned a method above, but without an example i can’t work that out.

you can fake deformation in a shader as described, or since you’re already working with geometry, you can just displace it!

this took like 10 seconds to go to edit mode, select the window vertices, go to mesh>transform>randomize, all it took was a tiny amount of randomness in the pop up dialogue to warp the reflections. and this would work on any surface, not just an array of windows. :slight_smile:

you can also do this non-destructively with a displace modifier.

for the plate welding you are describing, you’d probably start using a mix of techniques. is it a large scale wide shot? likely faked with textures all in shader. do you need closer up details? you could model some of the detail, and augment in the shader using things like the bevel node which creates nice edge masks for weld lines etc. lots of tuts out there for that! ie:

If your plates are defined by your geometry, you can use the vertex color feature.

You first need to paint each vertices of each panel with a different color (that’s the tidious part) and then use the vertex color node as your random input.

Something like this:

1 Like