Array Modifier : Randomize rotation, scale, location offset
This can be used to achieve nondestructive real-world imperfections, like giving a small amount of transform differences on tiles, fences, kerbs, etc. (Maybe it compensate particles in some situations like grass or carpet.)
It should work for two dimensional arrays too. When an array modifier stack on another, seed must change for every duplicated array too.
You can apply array modifier than give randomness or use material (by shifting normals using object id) to make tiles look like rotated a bit. But If you want to make the array more randomly rotated later, you have to repeat everything again. Material solution is nondestructive, but there is a limit to shifting normals without having artifacts or looking weird. As far as I know we can't offset vertex positions like shaders do. So material solution only can achieve faking random rotation.
5 Comments
i agree, but the devs have said repeatedly that they won't do anything like this with the array modifier. it blows my mind that the official solution is to use animation tools to accomplish a modeling task, but there you have it.
Unlike particles or duplis, all modifiers, including Array, generate new mesh in memory. So doing carpet, complex fences, would eat up the memory with unique geometry. I would like all this options you mentioned in the modifier, but also a button which would convert repeating undeformed geometry to dupli or particles, but the problem is with deformed arrays such as with curve modifier, than no instances could be made of original mesh
An array may not be convert to particle system identically because the randomisation seed going to need to give the same result on both of these two system. Maybe an approximation is possible. Although this feature would not be an alternative to particle system, it can be used to get quick results with small amount of geometry. Making a carpet will load memory a lot as you said. Maybe it can be used for making flora for interiors or for some stone near a path.
Can be done with AN.
@ondraise15: Problem is not being able to do it. There is many ways to do. It shouldn't be achieved with workarounds.