Better lakes rendering in 3d views


My 3D earth views usually show the ocean as a reflective surface while the lakes are rendered as they appear on the satellite images. Since the satellite takes the images from straight above while the 3D view looks at an angle the results are not optimal. I have occasionally generated reflective surfaces for larger lakes like in the rift valley images but this is quite a lot of hand work so it won’t work for areas with many small lakes.

Lake Kivu and the Virunga volcanos

While thinking about how this problem can be addressed it occurred to me that to the most part, i.e concerning the problem of discrepancies between the relief and waterbody data, this is not really a problem specific to 3D views but a fairly universal issue of all maps that depict the relief in some form. The major difference is that many such maps simply ignore the issues resulting from this:


But while in 2D maps you can ignore these problems in 3D this is not possible.

To solve this i need to modify the relief data to match the lakes and generate a separate geometry for the lake surfaces. For the geometry i currently use meshes which are very efficient in rendering but produce large amounts of data to deal with. Remember the earth surface is curved so the lakes are in fact not flat but curved as well. For a large area view you quickly get together a few gigabytes of mesh data. How these water geometries look like on their own can be seen in the following image:

And here with the relief and reflective water surfaces:

Another example from Norway with a real lot of lakes (although there are also quite a few missing in the data) including a magnified detail crop:

Lakes data is Copyright Openstreetmap contributors.

A more detailed description of the problem and the processing method including the QA data for the water data generated as a byproduct is available separately.

Leave a Reply

Required fields are marked *.

By submitting your comment you agree to the privacy policy and agree to the information you provide (except for the email address) to be published on this blog.