Animate Array and/or Applied Array

Hello everybody, I can’t manage to find an answer, and not for a lack of searching… How can I animate an array to get the same result as in this video at 29seconds for the roof tiles for example.
In cinema 4D I used to use an shader effector and it was fairly simple… Any similar tool in blender?

Here’s where my researches got me, I can manage to animate an array through an empty object : meaning animating the parents, and then the children of the array throught the empty. Needing to synchronise to animations… Possible, but not really efficient. That’s for arrays… If you have any other means, please let me know…

Now, for applied array, I’m stuck ahah. The only things I’ve seen would be to separate every islands into separate objects, put them into their own collection, and animating through an ID Key… I guess it’s ok, but for one, I think it messy, let’s say I have a roof with thousand tiles, I’m gonna find myself with thousand of separate objects… And second, for example, I have a porch, made of planks but for one reason I don’t understand, it “builds itself” from one hand, and then jump back to the other end, like a wrong order or something.

2021-02-10 14-34-49.mkv (1.8 MB)

So in the end, is there a way to achieve this for MULTIPLE meshes into ONE object? I’d like to achieve exactly the same thing as in the youtube video, in the same exact architectural context… Roof tiles, brick wall, log walls, planks etc…

I’m a noob by the way, especially when it comes to animation nodes…

I appreciate your help, thank you :slight_smile:

This is probably not something where you animate from a live array (not in Blender, at least.) An array may be involved in the creation of the original mesh-- but then you apply the modifier, separate by loose parts, set origin to geometry for all of them, and probably link the mesh data to a single prototype mesh, for future editability. But that doesn’t mean that every array element needs to be individually animated-- it’s not really that difficult to deal with thousands of objects, provided you only interact with them in such a way that they can all be dealt with simultaneously.

After that, you could do something like a floor constraint (floored to a world Z out of camera), the influence of which was driven by the X transform of an empty, minus the x transform of self. As the empty moves, the influence changes from 1 to 0 and the tiles “fall” from their floor position to their original position. If you create that constraint and driver before separating your array into parts, it’ll be preserved throughout the entire “object array”.

It’s not impossible to do it with a live array, but many techniques would involve instancing from an array of non-rendering planes to solve deformation problems so you could use modifiers, like a shrinkwrap, to “lift” the tiles. Easiest way to acquire the vertex weights onto the array might be a data transfer from a big, non-rendering plane.

One option, for a live array, would be to use a UV offset in the array, with a special UV map, to keep track of each tile, and then do a world space vector displacement in material nodes (assuming Cycles rendering):