Ofsetting armature animations in geometry nodes

I hope this is the right subforum, let me know if it’s not.

I downloaded an asset with a built-in animation, in this case “Madeka fish” from BlenderKit. I’m using geometry nodes to create many instances. (Simple setup below just for illustration purposes.)

If I press play then the instances will all animate - great - but they’re all in sync with each other. What I want to do is offset the animations so that each one starts at a different randomly chosen frame and they all loop. Is it possible to do that from with geometry nodes, without manually copying the asset and editing the animation?

(I would uploade the blend file and an image showing the animation setup, but apparently new users aren’t allowed to do those things. I don’t make the rules.)

the animation setup:

Hi hypercat,

unfortunately, there is no “Retime” or “Time Shift” node in Geometry Nodes at the moment like in Houdini.
As you have said, you have to manually copy your armatures and offset the animation a little bit and use the copies for instancing in Geometry nodes.

Here’s a little example:
Fish.blend (1.2 MB)

1 Like

Actually there is a way to offset animation of instances. This is a very weird workaround with Repeat Zone for 4.0a+ only. First of all, you need to define frame range of your bone animation (loop animation is perfect for this trick). Then export object as a .obj file animation sequence (don’t forget to tick checkbox Animation Export). Then import this .obj sequence (turn off Split by object checkbox). Put all imported objects into one collection and hide it. Then add any mesh and create a new geometry nodes tree.
Then explore project file that i attach, where you can find 2 setups - one is a obj sequence player. It utilize frame number as a index of instance selection for .obj collection , works like a player. And second is a randomizer based on repeat zone and random value, that creates modified instance on every iteration. You need to add math node with modulo for animation to repeat.
Hope my explanation helps… it’s confusing for first time, but you can add those setups to asset browser and use it easily.

3 Likes

Tested my method in more complex scenario, everything works pretty well. Here i offset group of randomized instances along spline:

4 Likes