Is it possible to set a driver as a "falloff" for animating several objects falling with delay?

I’m trying to animate several objects falling down from the sky to the floor and I would like for them to fall one after the other, and not just all together at once. These are different object on a landscape, and not just an array of copies, like is used often in motion graphics. It would be something like those breakdown/behind the scenes videos, like here:

I was thinking of using an empty that translates horizontally and drives the Z location of my objects but with some delay based on the X position of the empty. So, since the empty goes from left to right, the objects on the left would fall first and the ones on the right fall last.

But I haven’t figured out how to make the right expression.

If anyone can help me, it would be very, very appreciated.
Thanks for your time!

You’re doing this with keyframed transforms, not physics? It would be easier to randomize the Z transform of the objects so that they were falling from different heights instead. You could shrinkwrap/project (object constraint) to keep them from falling through the floor if they aren’t rotating.

You can’t, as a general rule, use a different frame as input into a driver. However, if you really really wanted to do this with a driver, you could, because you can represent falling with a function. From their initial transform (which can be set with a delta), with applied rotation, pos.z = 0.5 * a * t^2 . So by adding or subtracting values from t (and possibly using a min function to prevent negative t), you can change the time that they start falling. For example, 0.5 * a * (t-pos.x) ^ 2 . Note that ‘a’ here refers to your gravity vector, -9.8 for 1u=1m at Earth gravity. ‘t’ can be a stand in for (frame/fps).

You can use Commotion add-on, which is easy to handle, or animation nodes which is difficult but far more advanced. Either way is probably easier than using drivers.

I’m sorry if this is a dumb question, but you lost me a bit there. How do I set the driver to take into account the object’s initial transform? I don’t know how to set it with a delta.

I thought it would be a bit overkill. You think it would be easier/faster?

You could also just set the ridgid bodys to be deactivated by start and then move a collider close to them to get them to fall. This is one way of doing it if you want to use dynamics and don’t feel like using animation nodes.

Ps. I don’t know why I thought you wanted to use dynamics(physics), now that I read the post again… :grinning:


1 Like

To set a delta, select an object in object mode and ctrl-a -> apply (x) to deltas. Here, you may as well only apply location to deltas. The delta will apply an invisible offset to transforms-- there’s nothing you need to do to make the driver use it.

Recently i asked that question, how do people do that in blender and was told the Animation Nodes addon, have yet to try it.

Being new to blender i wanted to give this a whirler, just tired @bandages physics suggestion (i think :slight_smile: ); offsetting the Z of each object. Here’s the result and blender file in case others want an example.

I used collections to make it easier to group things to select objects also key-framed the Ridged Bodies “group” so the letters (“group”) fell first and then the objects (“group”) started later. I got the timing for the first falling Object (the Cube), key-framed that Ridged Body ‘Dynamic’ toggle, then selected all the other objects in that collection and hit ‘CTRL-L’ and selected “Animation Data”. After that any time i made an adjustment to a keyframe from that collection the adjustment effect all the other objects also.

falling-objects-offset.blend (1.2 MB)

Yes! Animation Nodes is not that harder to learn. Probably some tutorial about animating fall offs can do the trick. If you wish, I can share a print of the node tree to replicate your needs.

Would that work even with objects that don’t share anything in common? Because I used AN in the past (some time ago) but it was just to animate falling text. If you happen to have a node tree that would work in this scenario, it’d be great. :wink: