Cycles materials for 3D GIS - slope and azimuth

Hello.
I work in the area of 3D GIS and often use Blender as a supporting tool. As those of you who are familiar with 3D GIS area may know the iconic and commonly used functions in 3D GIS are probably slope and azimuth analyses of Digital Elevation Model (raster/grid or triangles based). Recently I had a presentation in which I needed to show our client how to generate maps of slopes and azimuths in ArcGIS software. Apart from generating them as permanent products (ie. raster files physically written to a disk) there is a possibility to only display the elevation model as map of slopes and/or azimuths (in real time). That rang a bell for me - if it’s possible in ArcGIS then why shouldn’t it be possible in Blender? So I made an attempt to create two cycle materials to produce the effects of the analyses in Blender. Note, that I very rarely use Blender for static renders (i use it mostly as a tool for hand-made/semi-automatic or automatic 3D data processing) and therefore I’m quite new to creating more complicated materials in cycles, so there may be some shortcommings or errors. For example it is now assumed that north is always in the direction of y+, and up is z+. Anyway, I thought I’ll share the materials in the current state. In the attached blend file there are two materials and a sample ‘terrain’ generated by displace modfier. I saw that there are some 3D GIS addons for Blender (e.g. to import raster DEMs) so maybe someone will find my work interesting or inspiring. If you have any critical notes, please share.

Attachments


leh_slope_azimuth_cycles.blend (625 KB)

I’ve experimented with some other materials like hypsometry and contour lines (which I’m not happy about so I won’t show them). You can see on the simple renders (I used srtm raster elevation models imported into Blender with the nice pluginby Vladimir Elistratov).

But today I saw the material you can download at Blender Swap that in many respects seems much nicer than mine and I wanted to point it out:


aspect (the terrain is colored according to its azimuth)


slope (the more red, the more steep the terrain)


hypsometry (the terrain is colored according to its height). It uses a color ramp based on one of the svg that can be found on http://soliton.vm.bytemark.co.uk/pub/cpt-city/views/totp-svg.html Creating that color ramp by hand based on svg (xml) file gave me an idea that it would be nice to be able to import svg color ramp to cycles node ramp automatically. I’ll look if I can come with some solution :slight_smile:

I primary use ISIS3 and gdal

for “slope maps” ( i avoid them if possible … so )
there is a old tool i use called “cyclops” ( runs on RHEL6 ( or my SL6.6 install )
http://thaines.com/
it is mainly a stereo imaging but has SFS

i use it to convert slope images to obj files for blender

I saw that there are some 3D GIS addons for Blender (e.g. to import raster DEMs)

for that i use the MOLA/LOLA pds add on
http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/NASA_IMG_Importer

Thanks, for pointing me to MOLA/LOLA addon, it’s very interesting.

Of course, I don’t suggest that Blender is the right tool for making slope, aspect or other analyses. There are better gis tools. I use ArcGIS (at work) and Quantum GIS (at home). The intention of creating the materials was that they do not use any maps (ie. rasters) or textures, but they colour the mesh based on its own properties in realtime. One advantages of it is that when you change the mesh (by sculpting or traditional edit mode) you get immediate response in changing of the appearance of the object. No need to recreate (or re-bake) the rasters.

Not using any textures was important for my aim - making a proof of concept of the materials for a programmer to implement them in my company’s web browser based application for viewing 3D GIS data. In such an application it is important to minimalize network usage (when you want to cover medium sized European country with the terrain with good quality). It’s much more appropriate for the browser to request only the terrain mesh from a server (and change the appearance of the mesh based on the mesh’s own properties) than the mesh plus separate textures for slopes, azimuth etc.

Hi lendrom,

I want to thank you because this thread and your addon for svg import have really inspired me. I’ve implemented similar functionality in my addon BlenderGIS.

Give it a try if you are interested !

Hi domlysz,
your tools look amazing. I’ll definitely have to look into them more in-depth. It seems to be the first step to seriously gis-enabling Blender. I always wished I had time and skill to develop an addon for creating visualisations based on GIS data (I even had some tests with displaying WMS services in Blender). In my opinion it has a potential to become an open source (and better) version of ArcScene or CityEngine.

You may also be interested in the fact that I have just released a new version of my gradient tools (better csv support, importing ggr and css gradients, simple gradient scanner).

thank you for the congrats, I’ll look to your addon update it look promising !