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).
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.
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
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.
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.
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 * -1
for fcu in act.fcurves:
for k in fcu.keyframe_points:
k.co += delta
k.handle_left += delta
k.handle_right += delta