grow faces over single axis Let's say I have a grid of small cubes 20 x 20. I want to be able to make some amount of them 'grow' over one axis.
The closest I had to this was use displacement with a cloud texture matched to an empty object that moves across the screen, but because it affects vertices instead of faces it doesn't look like cuboids anymore. Is there a way around this?

(to further complicate things I'd like to be able to then assign different materials to sides so would be much better if starting point is cubes rather than plane)
I would keep the displace modifier but start from a single vertex that way it doesn't deform the meshes.
Start with a single vertex and add 2 Array modifiers

Add a Displace modifier, setup a cloud texture, direction to Z, and set the coordinates to object, and add an Empty in the scene.

Add 2 Screw modifiers along X and Y, set the steps to 1 and the angle to 0°

Add a new vertex group to the object

Add a Solidify modifier. Set the thickness to 0, the rim material to 1 and the output vertex group to the group you just created.

Add a very large plane in your scene, set it to not render and set the viewport display to Bounds

Add a Shrinkwrap modifier, target the large plane, set the wrap method to Project along Negative Z, and limit it only to the vertex group. I also added a Bevel modifier.

Add 2 Materials, one for the Top &amp; Bottom, and one for the Sides.

Move the empty :