How to offset keyframes for many objects

Hi! I’m new on this forum, and need some help (if i posted this in the wrong thread, this is the reason: i’m sorry in advance). I’m trying to animate about 100 objects in Blender. I would like to offset them keyframes depending on the layer order like it is done in this C4D tutorial:

I can’t find a way to do it. Is it possible to achieve the same effect without python scripting? I did not find any animation modifiers with offset or delay value, or something like skew keyframes (just grab and scale).

Thanks for your help in advance!

Sure you can.
You can ‘mass move’ keyframes in the Graph Editor and the Dope Sheet.

1.) Select all the objects in the 3D view or via the outliner.
2.) Move your mouse into the Dope Sheet window or the Graph Editor window
3.) Type G90[ENTER] on the keyboard. That stands for 'grab and move 90 frames to the right along the timeline.

That is the basics of how to move multiple keyframes.

You can also move negative amounts of time as well with G-90.

You can also re-scale time in a similar fashion. But the scaling takes place wherever your mouse pointer is at in the timeline. So make sure to move your mouse pointer to frame #1 and the type S2[ENTER] to scale all the keyframes, in time, by 2 thus halving the animation speed.

NOTE: You can just type the G key by itself and the keyframes will “stick” to your mouse location and you can free-form move them however you like. In this mode SHIFT and CTRL modifiers still work, like in 3D view, for constraining snap operations.

Ah, I answered the question you posted in your title. But after watching the video I see what you are going for. That can be achieved via Slow Parenting.

Blender Sushi has a nice little explanation here.

1 Like

gonna check this out, thanks! actually there are lots of cases when it would be handy to have a variable like ‘NUM’ is in C4D that refers to the order in the hierarchy… i’m using this a lot in After Effects as well.

did check the video already. it’s another feature i was looking for, but it’s not an option if i have 200 objects (animated dupliverts above a complex object: i bake the dupliverts, so i have a 100+ layer animation with keyframes (scaling)). i would like to use this in post production as a mask layer for my animation… i’m trying to achieve this appearing effect (from 00:30): https://vimeo.com/94006434

the slow parent method is useful for rigs like this: https://vimeo.com/79114673

Thanks for your kind help. I was trying to run Re:LAY, but i doubt it would solve my problems. As far as i see, it would require manual setup of the tons of object i have in my scene. Unfortunatelly it wouldnt work. I’ve attached a little demo .blend file for my problem.

http://9stuff0.com/animation_demo.blend

I’d like to offset each objects animation depending on the order number in the dopesheet… an option would be if there was a function like skew keyframes on the dopesheet, or if there was a modifier, that delays the animation depending on the layer number (as it is possible in C4D, or After Effects with the NUM parameter), and apply the modifier to all the objects with one click… or to write a python code, that would do something like this, but i’m simply not there yet. :frowning:

here’s a snippet you can use, select your objects and run this froma text editor…
offset is based on object names, edit values and try extra options -noise and reset-


## offset actions in time


offset = 0.25 ## offset in frames
noise = 50 ## add some offset variation (set to 0 to disable)
reset = False ## enable to align actions to frame 0


import bpy, random
objs = [o for o in bpy.context.selected_objects if o.animation_data]


for i,o in enumerate(objs):
    act = o.animation_data.action
    delta = offset * i
    delta += random.random() * noise
    if reset: delta = act.frame_range[0] * -1


    for fcu in act.fcurves:
        for k in fcu.keyframe_points:
            k.co[0] += delta
            k.handle_left[0] += delta
            k.handle_right[0] += delta

2 Likes

wow. this works like a charm. perfect… MANYMANY THANKS!

2 Likes

Thank you was just looking for the exact same thing…wish this was a addon with a panel

thanks nehale, search for the Commotion addon, I remember it could do this and lots of other cool things

Is it possible to make the animation offset to be based on objects distance from an empty or from the active object?

sure Nizar, but just install commotion, there’s an offset from cursor option and some other tricks too

1 Like

Great! didn’t know there was such an addon in Blender!
Thank you so much!