Solved: Enable rigid body on object only on collision with other rigid body?

Hi,
is there a way to enable the rigid body properties of an object only on collision with another rigid body?


(Object A. is “floating” above the ground plane, which is not properly visible in this sceenshot)

In other words:
Object A. is supposed to remain static and not be affected by gravity at first. Only when object B. - which is itself a rigid body driven by the physics engine - hits it, object A. should be included in the world physics.

It seems there is no obvious / straight-forward function for this in blender.

These are the two possible work-arounds I already came up with:

  1. set up animation with physics for object B. and then manually set a keyframe in the timeline at the point of collision.
  2. have object A. be a physics-interacting rigid body from the start and place an invisible “stand” under it which holds it in place until the collision with the other rigid body.

But both of these don’t work properly for my goal because those objects’ shape and position for which I need this dynamic enabling of physics interaction are not known beforehand and will be generated by a python script.

Any thoughts on this? Does the physics engine maybe allow some sort of event-listeners for the python API (like “onCollision()” or similar)? Any trick that I might not be aware of?

Thanks for any thoughts.

Kind regards,
oyster

RTFM to myself :smiley:

It’s called Deactivation in Physics ‣ Rigid Body ‣ Dynamics

In a quick test it does exactly what I need and seems to work just fine.

https://docs.blender.org/manual/en/latest/physics/rigid_body/properties/dynamics.html#deactivation

Blockquote Start Deactivated
The rigid body starts deactivated. It will be activated when in proximity of moving active rigid body objects. The proximity check uses the object’s bounding box to determine if a moving object is close enough to activate it.