How to prevent characters from exploding when their neighbour is physicalized?
Before designing your behaviors, it is important to understand how physics simulation work.
See the physics simulation world as a separate reality from the crowd simulation. It means that when a character is simulated with Golaem Crowd it may or may not be in the physics simulation world (actually it may even have only some body parts in the physics world).
So depending on which mode you have set with the Physicalize Behavior, each character (or character part) can be in on of the following states:
- Only in the crowd world, not in the physics simulation world: when no Physicalize Behavior has been run yet, or if it has been dephysicalized
- In the physics world, but controlled by classic behaviors (Motion, Locomotion...): when set to Kinematic Mode
- In the physics world, but static; when set to Static Mode
- In the physics world, controlled by physics simulation: when set to Dynamic Mode
It is important to understand that a physics simulation always aims at reaching an equilibrium in terms of collisions and applied forces. It is tempting to have characters in the crowd world, and switch to dynamic mode at the last moment when something happens. However it means that a character will suddenly pop in the physics world and can completely break this equilibrium and make physics simulation go crazy (exploding/flying characters).
In these cases, the best thing to do is to set every characters in Kinematic mode from the start of the simulation. It is a bit more time-consuming but it will ensure that when you switch your character to dynamic mode, the physics simulation solver will not be taken by surprise.