I think I've figured it out.
All the relevant behaviour is in an AnimationPlayer
, so there's not really any code. So I tried to come up with a minimal example exhibiting the problem, failed create something from scratch, so tried stripping things from the real project to get it down to something small enough to upload. And noticed that at a particular stage in that process it started behaving as I wanted/expected.
What I think what is happening is that as the camera hits horizontal it suddenly gets a lot of terrain meshes in its visibility range (which you don't see popping into existence because of environmental fog). Take the terrain away and it works. Point the camera away from the terrain as it dips below the horizon (I can get away with this because of the fog) and it works. So I have an acceptable work-around.