hydro icon indicating copy to clipboard operation
hydro copied to clipboard

Very light (1kg) objects get _way_ too much force added onto them.

Open benbot opened this issue 1 year ago • 2 comments

Not sure if this is a limition of the method used to calculate buoyancy, but looking at https://github.com/godot-extended-libraries/hydro/blob/9a43e8d7965ba3fe68575b0c907dbfd9fe53dba1/src/hydro_rigid_body.cpp#L188

if the fluid density is the default 10000 and i drop a 1kg unit cube into some water, a crazy large force is applied and the cube goes flying.

Maybe there should be some kind of fast falloff of force or some equalizing force applied as less of the object is submerged? Scaling by face_area doesn't seem to be enough

benbot avatar Dec 12 '24 16:12 benbot

Yeah, I've noticed the problem but I haven't figured out the best way to deal with it. But first, note that a 1kg, 1m^3 cube is 1/10th the density of an aerogel, it makes for a rather extreme default case.

From a physics perspective, dropping something like this onto a body of water would create some sort of inelastic collision which would bleed off all of the energy. This isn't exclusive to your aerogel cube, a large metal plate dropped on its face would do the same thing. It's this "slap" on the water that isn't modeled here at all, and that needs to be done to reduce the energy upon impact before the buoyancy forces kick in. You'll find that for any object, the buoyancy force itself will work if you put the item at its natural waterline (just touching the surface for the cube).

I haven't figured out yet how to calculate a realistic value for the surface collision force, or when exactly to apply it.

jonri avatar Dec 12 '24 19:12 jonri

But first, note that a 1kg, 1m^3 cube is 1/10th the density of an aerogel, it makes for a rather extreme default case.

Wow, i didn't actually know that. :sweat_smile:

I'm going to be spending some time reading up on the physics of sailboats and if I come across anything pertaining to that "slap" i'll share it here.

benbot avatar Dec 13 '24 02:12 benbot