PDA

View Full Version : Larger scale mountains in regional maps. GIMP.



alexandream
12-04-2009, 05:00 PM
Hello, everyone.

I've been playing with creating mountains in gimp for scales of around 1px : 200m or bigger. The end results so far are not exactly as good as I want them to be, but I believe I got to a point where I can post the details of the process here and see if it sparks the interest of other people. Maybe we can get a better technique discussing it.

Before you start reading it, take a look at the end result, so you don't get disappointed after following through the tedious steps ;)

Oh, and I should warn you that I suck at giving colour textures to mountains, so I just gave up and worked only the height map and bump mapping from it.

Let's go then.

- Select a the overall shape of the mountain [sshot-0], with a slightly irregular edge: pieces turned inside on the edge are great spots for the lines you'll draw later to make the spurs. Save this selection as "mountain mask"

- Create a new layer to be the base of your heigh map. We'll start with it's background at 50% gray. That gives you room to start meddling with the foothills after you're done with the spine and spurs.

- Fetch the "mountain mask" selection, and run a shaped (angular) gradient on it [sshot-1], from 50% gray to white. Select none, and then blur it just a ittle bit (I used gaussian blur 10 px) to make it blend well with the surroundings.

- Optional: You can play a little bit with curves now, to make the steepness of the mountain more to your liking. I made mine softer at the bottom and slightly steeper on the peaks. To be honest, it didn't affect the end result all that much ;) [sshot-2]

- Hide the layer created above, let's call it "mountain shape".

- Create a new layer (let's call it "mountain spurs") and fetch the "mountain mask" selection again.

- Toggle the quick mask and let's play with it a little bit. What you'll do on it, is add lines descending from the peak to the base of the mountain. The best places for those to end are the places where the edge of the selection shift inwards. [sshot-3]

- Now you have the selection of the "spurs" made (you can save it so you are able to experiment with the intermediate steps if you're not satisfied with the result). Get back to selection, turning off the quick mask.

- Fill the selection again with the shaped gradient (angular) and have it's blend mode set to "Overlay". That'll make the shape of the "spurs" appear right above the overall shape of the mountain. To be honest, the mountain should look too "round" at it's peak by now, but we can fix that later, if we want to. [sshot-4]

- The base part of the height map is basically done. You can create a new layer (let's call it "mt height map") and copy-visible & paste the result so far in it.

- Now create a new layer with a tiny noise pattern. I used felimage's noise with size 3. Let's call this layer "noise" for now. I hide it, for it's just used as a displace map. [sshot-5]

alexandream
12-04-2009, 05:01 PM
- Select the "mt height map" layer and apply a tiny displace map, using the "noise" layer as map for both X and Y axis. I used a small setting of 3 for both axes. [sshot-6]

- Create a new layer with filled with 50% gray and blend mode Hard Light.

- Apply a bump map on it. Play with the depth a little bit until you're happy with the results. [sshot-7]

- As it's most likely, by now the mountain will have a weird round peak. If that happens you can duplicate the height map layer, play with the curves until you have a well defined peak [sshot-8] and mostly-gray on the rest, select the peak then make a new bump-map layer out of the peak. [sshot-9]

Then the end result should look something like this:
[sshot-10]

There it is, I hope it helps anyone. My next step, whenever I get a break from work again, is to try to add some nice foot hills to them. I've been trying for a while, with no luck so far.

Sigurd
12-05-2009, 12:26 AM
Looks really sharp. Not blurry at all.

Thanks for sharing your methods. Is it my imagination or does this work best with mountain ridges. Doesn't really create a lot of independent peaks.

Have some Rep.

alexandream
12-05-2009, 01:40 AM
Yeah it's basically useless to create lots of individual peaks: You either make a ridge or use the technique in a tiresome way to create each peak in a mountain range.

As I mentioned on another thread, I came up with this trying to replicate the terrain as seen in Google Maps for a specific style of ridge found in Death Valley, CA, USA, with Google Map's scale of 1px =~ 300m.

It's still far from the intent, but I figured that it the ideas would be more useful to people more skilled than myself ;) so I decided to post it. Perhaps someone can put it to good use.

To be more precise, the inspiration came from this specific ridge: http://maps.google.com/?ie=UTF8&ll=36.708064,-117.976685&spn=1.096545,2.469177&t=p&z=9 to the east of Lone Pine

Sigurd
12-05-2009, 01:53 AM
Thank you so much for sharing the real world inspiration. I wish we, as a group, would do that more often.


Sigurd

kjdavies
12-05-2009, 02:01 AM
Interesting technique. I haven't gotten some good spurs out of it yet, but I've only dabbled with it a little. I can see how it should work.

I've got a few suggestions, if you like.


For coloring, I usually apply a gradient map from HSV(27,64,38 ) to HSV(36,36,65) to the height map (sshot-6.png in your tutorial). This ranges from medium-dark brown up to pale brown, then bump mapping adjusts it from there. I then mask the color layer and I'm off.

If you want, I explain this in my tutorial, Yet Another Mountain Tutorial Using GIMP (http://www.cartographersguild.com/showthread.php?t=7961).


To get the initial mountain area shape, I use RobA's 'Three Layer Sandwich' (TLS) technique. This saves me from trying to come up with a 'good squiggle', and can provide enough variation in the outline to work. For mountains, where I usually want a rougher outline than I do for landforms, I typically apply the noise layer in multiply mode rather than overlay.

For smoothing the ridged layer (the angular fill), I find that spreading things (Noise -> Spread) by about five pixels before Gaussian blur makes for a smoother height map.

Rather than overlaying your spur layer, you might try multiplying it. I can't say this'll work (I haven't gotten a good spur layer yet), but I think it may do something interesting for you.

I've got four layers of bump map on the attached images. First is ridge layer overlaid by noise ('low'), then ridge multiplied by noise ('high'), then multiplied by noise twice ('very high'), then multiplied by noise three times ('peak').

I ditched the spur layers I had for this one. Instead, I did a 20-pixel polar displacement using my high noise layer as the source for both inputs. (I normally have three noise layers at different noise frequencies, used throughout the image). This usually perturbs the shape quite nicely, as long as the control numbers are kept fairly low -- even breaking the range into multiple pieces. It gets a little weird finding a good mask for it, though :/

For foothills, you might explore the 'Shaped (spherical)' shape for the area rather than the 'Shaped (angular)' fill, then reduce the depth of the bump map. Look into making a very fuzzy work area and multiplying the noise layer on it; this might give you enough hills at high enough resolution. You may need to do it at a higher resolution and scale down. You might also explore using TLS with turbulent noise instead of nonturbulent noise (the default); this breaks the work area up somewhat. I'm somewhat disappointed by the regularity of the turbulence, though (seems to like to follow the eight cardinal directions, meh). The heightmaps that can be produced out of it are very rounded-lumpy, though, which can be nice.

Hmm, perhaps apply some displacement to the turbulence....


I took a shot at making some foothills... I'm not entirely happy with them, but I figured it was worth a try. I took the original mountain area and blurred it heavily (250 pixel radius), then did a multiply-TLS to get the region shape. Did a spherical shaped fill to get the basic height map, smoothed it (15 pixel spread and blur), then generated low and high height maps by overlaying and multiplying by my noise layer respectively. Bump mapped with low depth (linear, depth 10) using the height maps. Applied gradient color HSV(70, 51, 33) to HSV(40, 44, 39) to the hill layer and masked off with the hill selection channel. Frankly, I think my color choice here kind of sucks. Didn't particularly try to clean up the artifacts in the bump maps, normally I would.


Anyway, I hope this helps.

Keith

kjd-20091204-001-displacement.png shows the mountains I got
kjd-20091204-001-masked.png shows the mountains overlaid by the blurred 'starting area', there's a pretty good correspondence, I think.
kjd-20091204-001-hills.png shows my first run at hills.

kjdavies
12-05-2009, 02:12 AM
To be more precise, the inspiration came from this specific ridge: http://maps.google.com/?ie=UTF8&ll=36.708064,-117.976685&spn=1.096545,2.469177&t=p&z=9 to the east of Lone Pine

I'm impressed, you're actually fairly close in principle. You might try displacing the ridge layer by the ridge layer (experiment with the displacements, but you probably don't want to go much over 5-10 or you get stretch marks).

I didn't realize what precisely you were trying to do; my previous reply started an hour or two ago (got interrupted...).

K.