Ocean floor visualization

Started by sboerner, November 15, 2017, 10:43:58 AM

Previous topic - Next topic

sboerner

So I've been messing around with one of the ETOPO1 heightmaps that cyphyr provided the link to in his Greenland thread. I wondered if it might be possible to show ocean depths with color as well as relief. Here's a first attempt:

[attach=1]

The land terrain is represented by one of the composite images from NASA's Visible Earth page, and the overlay is a little rough. The mask is based on the altitude of the heightmap and doesn't quite match the image, producing a black fringe that's especially noticeable around smaller islands. But with a little more care this could work. Perhaps the best way would be to render the terrain and ocean floor separately and take care of the fringe in post. Or just forget the photographic overlay and shade everything procedurally.

The files are too large to post here but here is the network that shades the ocean floor. It converts the negative ocean values into positive numbers that drive the green and blue components of the final color:

[attach=2]

To show the ocean surface instead, add a masked surface layer with smoothness set to 1:

[attach=3]

bobbystahr

Very smart work here...keep on tweaking, the semi tutorial in your post is quite informative.
something borrowed,
something Blue.
Ring out the Old.
Bring in the New
Bobby Stahr, Paracosmologist

cyphyr

Glad you found some use from the ETOPO1 heightmaps. There is much better data available with much higher resolution. I only used the ETOPO1 heightmaps because they were the only ones I could find that showed the subglacial surface of Greenland.
If you combine the Topography and Bathymetry files from the NASA Visable Earth site (one in to each of two displacement nodes), the Bathy one negative) you should have something that matches their high resolution Earth maps.
Also check out posts by Big Ben, he's the master of heightmap manipulation :)
www.richardfraservfx.com
https://www.facebook.com/RichardFraserVFX/
/|\

Ryzen 9 3900X @3.79Ghz, 64Gb (TG4 benchmark 6:20)
Ryzen 9 5950X @3.4Ghz, 16Gb (TG4 benchmark 4:28)

sboerner

Richard, that's good advice. I hadn't thought about combining the two Visible Earth files that way – now that you mention it, it sounds like an obvious solution. I'll give it a try. I'll definitely check out Big Ben's posts, too.

I always seem to need globes for maps and other projects, so whenever I see a new resource I like to try it out.

I've used the Visible Earth files for years, but the elevation files all seem to be 8 bit. I've run into aliasing issues with large, smooth areas like Antarctica and Greenland, even with the high-res files. Are you aware of any high-res 16-bit versions of their files? It seems odd that they wouldn't be distributed that way, but maybe I'm not looking in the right place.

Thanks, Bobby. I'll keep on tweaking!

sboerner

Getting closer. Here is a new rendering of the same ETOPO1 data but with a more accurate water mask. The mask matches the coastlines much better and nearly eliminates the black fringes. Much better result that would be acceptable for online and print. The most usable scales would be continental or larger, as the resolution of the terrain image suffers the closer you get.

[attach=1]

The water mask is from here: http://www.shadedrelief.com/natural3/pages/extra.html. This is the best-resolution composite I can find of the MODIS water mask, which is available in 1x1 degree tiles: https://lpdaac.usgs.gov/dataset_discovery/modis/modis_products_table/mod44w. I'd really like to find a higher-resolution composite.

Also did a comparison of the ETOPO1 elevation map with the higher-resolution maps from Visible Earth. Here they are side-by-side. The elevation data for both is original resolution so nothing is downsampled. The 8-bit VE data produces a lot of banding, especially in shallow ocean areas, and doesn't appear to have any more detail than the lower-resolution 16-bit file, at least from this perspective. So for now the ETOPO1 data seems to be the best way to go, at least until something better turns up.

[attach=2]



N-drju

I don't understand doodley squat from the blue node diagram, but your ocean imagery looks impressive!
"This year - a factory of semiconductors. Next year - a factory of whole conductors!"

sboerner

Thanks! The blue node network just does what a ramp or gradient would do in other applications. It's the result of much trial and error. There probably are simpler ways to accomplish this, but it seems to work.

The bathymetric data are negative values, so -1000 is lower than -100, for example. We want the color to get darker as the depth increases, so these values need to be (A) converted into positive numbers that (B) get smaller as they go down.

To see how it works just think of a value and follow it. For a given depth of -50:

- The first node, Displacement Shader to Scalar, turns the displacement value into a single number (-50).
- Abs Scalar makes it an absolute value (50). This takes care of (A), above.
- Inverse divides 1 by the value (1/50 or 0.02). This takes care of (B).
- Build Color uses the constant values and multiply nodes to make an RGB color based on red = 0, green = 4 * 0.02, and blue = 30 * 0.02, or red = 0, green = 0.08, and blue = 0.60.

If you plug these numbers into a color picker you'll see they make a dark blue. Everything at a depth of -50 will be this color.

Higher levels produce lighter blue shades, and deeper ones produce dark shades. The Color Adjust node rescales everything to keep the lower depths from going black and the higher ones from being too bright.