Randomizing animations on rigged object particles

I have a little problem I could never find an answer to. I’m not even sure if vanilla Blender has a solution for this, was hoping it does since I don’t like relying on external addons for my projects.

So I want to use a particle system to simulate a crowd of people. I have a collection containing one or more rigged characters, which I then reference as the render group of a particle system on a plane. The static model looks fine: I can randomize the rotation of each person, the size, even stuff like the colors of clothing using the random input in the materials tab! But I found no way to randomize the animation.

If I directly animate the character instanced by the emitter, the animation is applied to each character particle. This obviously looks awful since you don’t want a crowd of people replicating the same movements like robots: Even for an idle animation it stands out and makes for a fake decoration.

I’m fine with either of two options: Either make the each instance of the character play an entirely different armature action, or have them all play the same animation but from a different starting point and ideally at a different speed. The particle system doesn’t know about armature animations when rendering rigged groups, so what I’m probably looking for is a way to randomize the active animation of an armature based on its object instance or position. I assume the NLA editor may offer a solution but even it may require some trickery to do that properly. Anyone know the easiest route to achieving this?

Are you referring to “CrowdSim3D” or “CrowdMaster” ??
Anyhow, If your using a ‘particle system’ then you can ‘Edit’ it, link to manual page:
https://docs.blender.org/manual/en/latest/physics/particles/mode.html
The add-ons are prob the best way to though.

Interesting. How can particle edit be used to offset the animations of duplicated rigs per-particle?

Also I forgot to add: I heard about a new animation nodes system, though I never found them or worked with them yet. Could those be another way of achieving this goal?

That was more what I was referring to.

Not new, just refactored for 2.8x - most definitely - you can do stuff with them in a way you can never do with keyframing/armatures/drivers - you get the point.

Still not able to find any way to get this working. I tried using the NLA editor and even drivers, but in every case I run into the same limitation: Any tweaks to the animation are applied to the object being duplicated, rather than each instance of the particle. There just doesn’t seem to be any way to induce an animation offset from the particle system itself. Should I conclude this is impossible to achieve with the current version of Blender?

No, they are all instances - your using a particle system, as I said, you prob want to use one of the add-ons for this.

Thanks for clarifying. So there’s no proper solution yet, at least not without using other addons.

Gonna go with the second best option for now: Just duplicate the character collection with linked data, apply an unique animation to each copy of the armature, then use multiple particle systems each with a different seed so that they don’t overlap. Don’t know if this might later mess up stuff like particle collision detection, but it’s good enough to work for my use cases.