1
$\begingroup$

I have generated tiled wall using 2 times array modifier(width and height),

I want to introduce some randomness to materials so the tiles don't look like cut from single large piece. I tried adding random rotation like below but the rotation is the same for each duplicated object. node setup What can I do to make it random on each instance independently

$\endgroup$
3
  • $\begingroup$ maybe i should use particles? i thought it will be that easy. $\endgroup$
    – Lord_JABA
    Dec 7, 2019 at 18:56
  • $\begingroup$ I tried using UV coordinates and then I can introduce a little bit of offset in array modifies settings. But random rotation was more what I meant here. $\endgroup$
    – Lord_JABA
    Dec 7, 2019 at 18:58
  • $\begingroup$ You don't just have to use UV coordinates for UV's ... they're just numbers. $\endgroup$ Nov 7, 2020 at 20:53

2 Answers 2

1
$\begingroup$

Random material offset (as official, literal material index offset) uses a different technique, possible with geometry nodes, but the problem you reference doesn't require random material offset, and most things you would use material offset for can be done in nodes, so I'm skipping that part of the question.

For random, per-array-object rotation, we can use UV to create a per-object random value, and then rotate our mapping vectors by that random value:

enter image description here

I've collapsed the entire UV map to a single point (by scaling it to zero). Then in each array modifier, I offset that UV. Now, I can use the UV as a lookup on a noise texture, and use the output of that noise texture to remap my object space coordinates. Because each array instance has the same UV throughout it, each array instance will get the exact same rotation.

This relies on your example of using object coordinates for your main material, as Blender's array modifier UV offset cannot be set individually for each array instance. If you need to use UV for other purposes, this might not work directly (it's doable, but more complex/more work.)

$\endgroup$
0
$\begingroup$

This is video what helped me. The Array modifier creates a copy of an object, which behaves exactly as its origin. So you should also see this answer.

Apply the modifier to make the data real.

Enter Edit Mode on the object and press P > Separate by loose parts.

Select all separated objects and press Shift + Ctrl + Alt + C > Origin to Geometry.

This will make each piece an individual object with the origin located at the origin of the original object. Now you can manipulate them as you wish.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.