Make mountains in Blender from height maps
Blender can make mountains from height maps, and this is a tutorial to show you how. The height map I've used is represented by a grayscale bitmap. Black being the lowest point, white the highest. Blender is able to deform a mesh based on the pixel colour of a texture. Download the following height map of two New Zealand mountains, Ruapehu and Ngauruhoe.png, for use in the tutorial.
The height map was created by University of Otago - National School of Surveying who have published it at Koordinates, and is released under a Creative Commons Attribution-Share Alike 3.0 license.
Blender is free, and open source, from blender.org. It runs on Windows, Mac, and Linux. This tutorial is for Blender versions 2.5 & 2.6.
Tutorial
When Blender is first opened there is a cube in the middle of the screen. To delete this, Right Click
on the cube >> press X >> Enter.
![]()
Next you will need a heightmap to work with. So download Mt Ruapehu and Mt Ngauruhoe.png. This is an image of two mountains found on a volcanic plataeu in the North Island of New Zealand. You can make your own heightmaps by opening your favourite photo editor or painting program and using a grayscale palette to draw high areas in lighter shades and low areas with darker shades. At the end of this tutorial you can read about sourcing heightmaps for other parts of the Earth. |
Open your heightmap by clicking File » Import » Images as Planes.
Press ⇆ Tab to enter Edit Mode
. Press W to bring up the Specials menu and select Subdivide.
As an alternative to this, you could use a Smooth
modifier. Modifiers are great to use because they allow for non destructive editing. You can play with the settings to your hearts content and easily reverse any changes. Modifiers can slow down your computer a little, if this is so, click Apply once you're happy with the model. Also click apply if you want to edit the model as a mesh.
Was this tutorial useful? Do you have questions? Comment below...




A set of displacement options will appear. To use the heightmap click on the open existing Texture icon, 
ow you will see mountains! They'll be rough, and too high though. 
Comments
Awesome tutorial! Thank you very much, it works like a charm.
Cheers!
Thank you very much. That is exactly what I was looking for. A simple way to create terrains with Blender. If there was a second tutorial how to texture this terrain would be awesome :)
Thanks.
regards
Thomas
I'm glad this tutorial is useful. It makes it feel worthwhile writing it, knowing that it is being used.
I'll come up with a texturing tutorial soon.
Awesome dude, cheers ay bro
Sweet as :)
BTW having a little trouble with applying textures, so don't hold your breath for a texture tutorial.
OMG , this is exactly what i m searching for !!!!
"merci beaucoup" for this tutorial !!!
De rien :)
nice
Simply awesome! Thanks
I've updated this tutorial with:-
Files:
In the tutorial I'll use textures created from NZ government data, stored at Koordinates.
Attached to this comment is a zip file with the DEM and road texture used in the above model. The DEM is accurate to 1 metre! That's good enough that you can see the roads in the model, even without texturing. You'll need to subdivide the mesh at least 700 times to see this, 1500 subdivisions is better.
And here's one with a 2004-2005 Orthophoto, also from Koordinates. Click to enlarge.
I've attached a scaled copy of the texture. Use it with the model from the previous comment. Right click >> Save Link As...
I've written a tutorial on texturising terrain models using bitmaps, it's at Tutorial: Texturising Terrain in Blender.
Hi John, I picked-up the tutorial from your posting on the QGIS forum, but I have a problem.
I've tried importing your sample grey-scale PNG (and one of my own) to Blender but what I get is not a grey plane but a grey cube. This is before I try to move on to the stage of subdividing. It's bound to be something I'm doing wrong, any ideas?
Ubuntu 10.11 (64-bit)
Blender 2.5.8
Though I get the same problem in Win Vista.
Hi Nick, can you send me the .blend file with the erroneous cube? john&johnflower.org
Hi John, well it was me. Under 'Scene' on the RH side of the screen there is an item called 'Cube'. This was enabled by default but disabling it fixed the problem. I'm sorry about this, I don't know anything about Blender (yet) I just pitched straight in with your excellent tutorial.
Regards, Nick.
Ah! When Blender is first opened there is a cube in the middle of the screen. It has the same XY dimensions as the image youre trying to import. So you will never see the image until the cube is deleted. The quickest way to do this is to Right Click on the cube >> press X >> Enter. To make this empty scene the default when you load Blender, press Ctrl Alt U and click Save As Default. I've updated the tutorial with this instruction.
Your data gets me a little closer to completing a difficult task of modelling a WW2 military installation in 3D. Thank you.
You're welcome. Post some pictures as you progress. It'd be good to see what you're doing.
Very cool, John! Thanks from Brazil.
Voce e bem vindo, meu amigo.
Thank you for being a constructive force of good in the world! This was perfectly helpful!
Thanks so much! Been looking for something like this for a long time.Kingston, Ontario, Canada
You're welcome. See also my tutorial Finding Height Maps on the Web. It maybe helpful for modeling terrain in your area of interest.
Fantastic explanation. I have been spinning my wheels looking for this info. Bravo!
I'm glad it's helpful.
thanku very much i hope there will me more tutorial coming soon..............
You're welcome, Sanjeev
This was very useful to me, thanks.
Thank you very much. It is very useful. I also forward your article on my blog.
When I import as plane,using png file from this page, I get no plane to show up in view, meaning I have to scale it to see it,,,when I apply the heightmap as per this page and add displace, it looks nothing like yours, as its mostly flat and looks like a version minecraft,,what am I not doing accurately? thxlee
Ok I resolved my issue, though not sure why I got the behavior I did, maybe that Im using 2.65 ?I had to create a plane by itself, by not using import image as plane, and then go from there by adding a texture, and then displacing it.Sorry about saving 3 posts, but I didn't notice until it was too late, that the message 'it will be posted after approval' shows at top of page.thxlee
I followed this tutorial but when adding the modifier (must be in Object Mode) but when going into Edit Mode there is no Map under Texture Coordinates and only in Object Mode does the result happen. Not in Edit Mode so as to 'edit' it. What must be done? I will say your tutorial is great.
Thankyou! This tutorial was useful:) I was able to load my own greyscale image successfully:)
Hi Lee,
Blender has changed the way it imports images. The tutorial still "works", but the results don't match my example images. In 2.65 image dimensions are handled differently. On the left side bar of the Plane Import, down the bottom, you will see:-
Changing to Absolute or Dots/BU may produce better results.
I will update the tutorial once I've had a play with the new settings. I also suspect the Displace Modifier settings may need to be tweaked too. I will post a comment once I've updated the tutorial.
Regards,
John
Hi Michael,
Look at the Displacement Modifier pane.

icon. Clicking this will display the
icon which will allow you to edit the vertices in place.
To see the displacement in edit mode you will need to click the
Have I answered your question fully? If not, post further questions.
Regards,
John
Excellent tutorial. Exactly what I need to make quick realistic mountainous terrain in Blender. Two observations :1. I use Blender 2.65 and in the Add Modifier (Displace) panel, the Texture Coordinates MUST be set to UV (where yours shows Map) for this to work correctly. This field defaults to Local in Blender 2.65 , which does NOT work.2. After the first step of importing image as plane , the plane imported is tiny by default. This can be scaled up by increasing the X and Y scale numbers in the View Properties panel (N). Obvious in retrospect, but it wasn't immediately obvious to me.Texturing the mountain is next !
Hi John Thanks for the great tutorial, it solves what I've been searching for. I am intending to create a model from a greyscale image using this displacement map method. However the file is then to be 3d printed in multiple materials, which is done using the .stl file extension. As I am new to Blender I am wondering if after creating my 'terrain' it would be possible to split up the mesh into different 'parts' according to its original greyscale tones? The reason being that the 3d printer requires each region of different material to be specified within the 'assembly' file.I usually use Solidworks for this process, where each part (for each different material) is modelled seperately then put together in an assemble file for printing, where each part has a reference/connection to one another.Any insight you could possibly give would be much appreciatedRyan
Pravin, thank you for your pointers. I'll pay attention to them when I upgrade the tutorial.
Ryan, each shade of gray is a height in the Z axis. Break the model into XY cross sections of a given Z height. Do this using Yorick's Blender Cross Section Script or export from Blender and use Slic3r (an app that prepares models for 3d printing). Remember if you've created a mountain from a plane you will need to close the model by giving it a base so that it is manifold, or thicken the walls so that it can support itself in the real world. You can check for non-manifold edges by entering edit mode, unselecting all vertices, and pressing Ctrl Alt Shift M.
Hello!I love your tutorial. Especially the screenshots, thanks so much.To me, Blender is the world's least-intuitive program ever. I've tried following the recommended fixes above but am not nearly smart enough to know where all the icons and sub-menus are. Do you have any idea when you might be able to update this tutorial?Thanks again. :)
Excelent tutorial, thanks John. Saved a lot of research for me.
If you're having trouble following the tutorial because I haven't updated it. Perhaps try downloading an older version of Blender from http://download.blender.org/release/Blender2.59/
Add new comment