Well there isn't much magic there.
Think of what I call dynamics (that is geometry which is not part of the static level mesh).
In jme I have a SceneGraphTraverser and there I check If I find a Spatial where .getUserData("dynamic") != null.
Then I remove that spatial from that Node, add it directly unter the rootNode and give it it's own RigidBodyControl.
For Water I add a plane in blender, add
water_basic as Properties/UserData along with some values for the color and whatnot and in jme the same traverser removes the plane but adds a waterfilter there.