dorcsyful said:
Is running the collision resolution algorithm on that one point counts as perturbing? If not could you elaborate on how it works please?
Yes, the collision response+gravity should cause the object to be perturbed a little bit on each frame, such that the contact point changes.
You can build a contact manifold using this process whenever a new contact is found:
1. Transform new contact into current local space of each object.
2. If the new contact is within a tolerance distance from an existing contact, then the existing contact is updated with the new collision point/normal and nothing else is done.
3. If not, then add the new collision point to the manifold if the manifold is not too big (e.g. no more than 4 points).
4. If there are already the maximum number of points, then discard one of the manifold points and replace it with the new point. You should choose the discarded point in order to maximize the area of the polygon/triangle defined by the remaining points (this is important for stacking).
The main downside of doing it this way (iteratively building contact manifold) versus using SAT and clipping is that there are several frames until the object stabilizes. This is not that noticeable in most cases. Some people do both, using SAT+clipping to build a full manifold on the first frame of collision, then iteratively update the manifold after that.