I know of one method. No idea if it’s too complicated for you. It’s probably not very much use in most circumstances.
So we’ve got a deforming mesh, and that deformation changes its center of mass, and however it deforms, we want to teleport it so that its center of mass remains in the same place, right?
We can get the center of mass using GN. Make a big grid of dots, big enough to encompass the space of anticipated deforms; then, remove all the dots that are outside the mesh. (Probably, by sample nearest surface, compare vector to position to surface normal at that position.)
If we get the mean position of the remainder, and everything’s the same density, then we get the deformed center of mass. We can then re-instance the deformed mesh at the location we want to keep consistent. (Desired center of mass could be a moving target.)
Drawback #1: This is a sampled technique to calculate center. There’s noise. If we use few vertices in our grid, that noise will be large; if we use a lot of vertices, that noise will be small. It would probably, technically, be possible to measure the volume of a manifold mesh that didn’t self-intersect, but I think it would take a long time and be complicated to implement. Some kind of temporal smoothing of the sampled center might help, I don’t know.
Drawback #2: Most of the time, you want deformation that responds to the center of mass. If a character rocks on their heels, their heels stay in the same place regardless of center, right? Their heels don’t just teleport with their changing center of mass. But the motion of their legs, in turn, changes where the center of mass actually is. So if we wanted to do this with a character, it’s potentially an iterative process: check center, redeform; check center, redeform-- etc. That doesn’t strike me as practical.