Physical water / wind regions (force fields?) in bullet

How would I go about creating a region that applies a force to objects that enter it using bullet physics? (or ODE if bullet doesn’t support this.) I eventually want to create an ocean in which physical objects float.

Can I create an object that just applies a force per collision with an object, or do I have to check that objects are in the region myself per tick, then manually apply the forces myself?

Force fields are simple. If the field region is box shaped you can use a ghost object and the getOverlappingNodes function. If not you can work callbacks.

Buoyancy is more difficult. Much more difficult, since you don’t have to apply a central force to submerged objectes, but a force offsetted depending on how much the object is submerged and how it is oriented. I don’t know an implementation for Bullet, but perhaps you might find something by googeling.