I’ve been meaning to write up a bit of a method blog on how I’ve produced some of the Island renders I have been working on in my spare time throughout the year – more so as a workflow reminder for myself .
If anyone is interested workflow including procedural generation of bathymetry falloff is below… note it’s done using Cinema 4d and DEM Earth so not open source but I suppose entirely possible using Blender etc.
Having the ability to pull in terrain data (SRTM 90m or Aster GDEM 30m) for anywhere in the world with OpenStreetMap directly into Cinema4d is made possible with DEM Earth. I’ve used it a lot over the past year for everything from context mapping to animating detailed commuter maps – you can do a lot with it – any budding cartographers with an interest in 3d mapping and access to C4d should check it out, it’s well worth the cost.
However it doesn’t give you access to bathymetry data, which is not always available (at detailed levels.) I was lucky with the Honolulu data in that detailed Lidar was available however for the other maps I was lacking sea floor info and for the renders to get that nice ocean floor falloff I needed to improvise.
So first thing first I grab my extent in DEM Earth and load in some SRTM, which is good enough detail for the level of my render and exaggerate the height by about 50% for a bit more pop.
Its clear that I don’t have sufficient ocean floor data which I need to generate somehow…
So the next process is to use an alpha channel to mask out the sea floor, to do this I output the extent of my model to a grid in Arc Desktop so I know what extent I am working with. I can then download the island boundary data and create a mask which I can use to mask out the sea as per below.
Now for generating the bathymetry data, I am approaching this form a purely aesthetic workflow so I make no assumptions or promises that the sea floor data is accurate! I am just interested in creating some falloff and displacement so my ocean material will get a nice colour banding/gradient.
My slightly confusing workflow is as follows… First of all I make a plane and subdivide (more detailed mesh I have the more detailed the displacement) at the same extent as my DEM Earth object. I then need to add a displacer (C4d deformer) which will deform my plane into some sort of bathymetry. To create the displacement I create a blank material and add some layers (!) as per the below.
So breaking the above down; my first later is my alpha channel set to ‘add’, this is because I want my plane perfectly level to join with the land dataset (which later requires a little trial and error). The blending modes in C4D are just like that of Photoshop or QGIS so are great for compositing detailed textures. The second layer is a fall off layer which I created using some ‘euclidean distance’ analysis in Arc. I basically want to simulate a gradual fall off from my land dataset. The next three layers are various noise textures which create the uneven sea floor, I find this gives a nicer effect than a perfectly smooth graduation.
So applying this to my plane I get something that looks like the below…
Starting to look nice! The next stage is to try and line up the two, I imagine there are better ways to do this, creating one composite texture to displace both the sea and the land, but I find doing it this way gives me more control over the individual elements.
Once the two data-sets are lined up we can start adding gradients or textures to the mesh. DEM Earth is great because it automatically downloads and applies a bunch of tile-sets to the image, I have done so with the Mapbox run bike and hike tile-set which looks great for Bali. That said I like to create my own basemapping in QGIS or Arc Desktop and applying this via texture is simple enougt (this is what I used for the Phuket example).
I also now create my sea dataset which is a simple plane with a water based material added to it. I still don’t fully understand water dynamics (and never will!) but enough googling can get you a basic water setup similar to the below.
The refraction, absorption colour and absorption depth in transparency all help to create a realistic water feel and displacing the material can help create the illusion of waves and swells. This takes a lot of trial and error (from my experience) and also massively changes according to how you light the scene. Generally I prefer lighting with HDRI as it gives a realistic feel but doing so in this case meant my water looked far too dark for some reason – still investigating. In the above cases I have either lit the scene with lamps or C4D’s sunlight settings.
One all that is applied I export my DEM Earth object to a mesh and subdivide it to get a nicer, smoother mesh.
Another element I started playing around with for the Bali map was to displace the land texture according to fall off i.e. the steeper the terrain the rougher the surface (generally speaking). The below inset shows this more clearly, it looks a little weird as I am still working on how to displace and create realistic rocks. Essentially I use the C4D falloff materials along with a gradient and add this to the bump and colour channel.
Final touches include procedural cloud generation using c4d’s turbulence emitters and some general photoshoppery! The overall render I feel is pretty good, there are some definite issues I need to iron out especially meshing the land to meet to sea but nothing compositing in photoshop cant fix.
It’s also worth highlighting the vegetation (tree) cloners I used for the Isle of Man render, pretty easy to set up using texture maps for these and the addition adds a ton more detail to the overall feel of render.
This kind of imagery does take a while to finesse but for me the it’s totally worth the extra effort, there is so much use for 3d in cartography whether that is using propriety or open source products. I am fortunate to have access to C4d and DEM Earth but I started my 3d journey in Blender and I am sure much of these processes can be replicated in Blender.