Jon
25-11-2005 17:16:56
My attempt to foster a discussion in the general area didn't pan out, it would seem that LOD isn't much of an issue to many people.
Anyhow I have been digging into this, and the more I see the more I'm convinced that something isn't quite right.
de Boer's equations are presented without derivation, and I haven't seen anything like them in my literature search. Unfortunately this is a holiday weekend, so I can't visit a proper research library until next week. But I've checked all of his citations.
If we step backwards to Lindstrom's paper, we see screen-space error calculations with derived equations. I haven't sat down and walked through them, but I have a gut feeling they are correct (its been years since I've written projection code).
Fiddling with PLSM, I am leaning more towards the belief that there is little relationship between screen-space errors and the minimum distances before a LOD change occurs.
The terrain popping I have been seeing is not to be blamed on the source data. At worst case (if things were working properly) data with high deltas should be rendered at LOD 0 all the time, effectively turning off LOD. I have constructed small 2D meshes which I believe cannot be rendered at anything but LOD 0, as a means of gaining insight into this phenomenan.
So what could be the root cause of the popping (which only seems to bother me )? I think it comes down to the minimum distance calculations -- LOD is being changed too close to the camera. I have looked at this distance being calculated, and it is matching de Boer's calculations fairly well (except for "A" which is set to 1.0). So if the implementation is correct, then the root equations become suspect.
I would have expected that the maxPixelError would at some point be projected from the viewport to the nearest face of a renderable to determine the maximum delta an LOD would be allowed for that renderable. Then minLevelDist would be adjusted.
I do see "C" being recalculated on camera movement, and both "C" and the camera bias is used when comparing LOD distances. I assume camera bias is to account for non-horizontal camera orientation, which leads me to believe that "C" isn't getting the job done.
There are likely several logical wrong turns in the above, and I would appreciate seeing them pointed out. But one thing is certain, and that is that popping does occur with certain terrain data if LOD is used. (Setting maxPixelError to 1 effectively disables LOD as everything is rendered at LOD 0).
I'm toying with the idea of a different LOD algorithm based on some color quantization work I did years ago. It could likely yield an interesting paper, if nothing else. The things which are holding me back are:
1) understanding screen error calculations (I should probably just go with Lindstrom's equations rather than de Boer's unless someone can explain what de Boer is doing).
2) handling terrain deformation. Blowing things up to the point where LOD calculations are affected is not my cup of tea, but I respect that others are very interested in this. So would I be able to update LOD information on the fly in real-time?
Thanks for letting me ramble. I'd appreciate hearing from any interested parties.
Anyhow I have been digging into this, and the more I see the more I'm convinced that something isn't quite right.
de Boer's equations are presented without derivation, and I haven't seen anything like them in my literature search. Unfortunately this is a holiday weekend, so I can't visit a proper research library until next week. But I've checked all of his citations.
If we step backwards to Lindstrom's paper, we see screen-space error calculations with derived equations. I haven't sat down and walked through them, but I have a gut feeling they are correct (its been years since I've written projection code).
Fiddling with PLSM, I am leaning more towards the belief that there is little relationship between screen-space errors and the minimum distances before a LOD change occurs.
The terrain popping I have been seeing is not to be blamed on the source data. At worst case (if things were working properly) data with high deltas should be rendered at LOD 0 all the time, effectively turning off LOD. I have constructed small 2D meshes which I believe cannot be rendered at anything but LOD 0, as a means of gaining insight into this phenomenan.
So what could be the root cause of the popping (which only seems to bother me )? I think it comes down to the minimum distance calculations -- LOD is being changed too close to the camera. I have looked at this distance being calculated, and it is matching de Boer's calculations fairly well (except for "A" which is set to 1.0). So if the implementation is correct, then the root equations become suspect.
I would have expected that the maxPixelError would at some point be projected from the viewport to the nearest face of a renderable to determine the maximum delta an LOD would be allowed for that renderable. Then minLevelDist would be adjusted.
I do see "C" being recalculated on camera movement, and both "C" and the camera bias is used when comparing LOD distances. I assume camera bias is to account for non-horizontal camera orientation, which leads me to believe that "C" isn't getting the job done.
There are likely several logical wrong turns in the above, and I would appreciate seeing them pointed out. But one thing is certain, and that is that popping does occur with certain terrain data if LOD is used. (Setting maxPixelError to 1 effectively disables LOD as everything is rendered at LOD 0).
I'm toying with the idea of a different LOD algorithm based on some color quantization work I did years ago. It could likely yield an interesting paper, if nothing else. The things which are holding me back are:
1) understanding screen error calculations (I should probably just go with Lindstrom's equations rather than de Boer's unless someone can explain what de Boer is doing).
2) handling terrain deformation. Blowing things up to the point where LOD calculations are affected is not my cup of tea, but I respect that others are very interested in this. So would I be able to update LOD information on the fly in real-time?
Thanks for letting me ramble. I'd appreciate hearing from any interested parties.