I am looking for some algorithms which allow me to generate a realistic 2D terrain map. By realistic I mean that person will consider such map as a "normal" terrain map, not created artificially. I don't want to create photorealistic map. Just something similar to maps that can be viewed in a geographical atlas.
So far I am using perlin noise for height map and then I am adding lakes, rivers, mountains, swamps and so on. You may look how it looks on the picture below:
Terrain map http://www.freeimagehosting.net/uploads/1f1e9372bf.png
I am not happy with it. It's not realistic but I can't figure out something better on my own. Time is not a matter so the algorithms may be heavy computational.
Thanks for your time.
After edit:
I think I've found one article that can be helpful: http://portal.acm.org/citation.cfm?id=1255047.1255077
However it can't be obtained for free so I am still looking for answers or ideas.
“We’ve found that World Creator is one of the most advanced terrain generators available on the market, able to build just about any kind of landscape you could imagine all in real-time.
FlowScape stands out from the rest of our list as the only 3D map generator. With FlowScape you can curate multiple different types of terrain, from snowy mountains to beach paradises, or choose from 20 presets you can edit.
Terrain and landscape generation light years ahead. Generate, design, blend, mix, paint & sculpt, erode and simulate in real-time. Everything is real-time. Ultra-Fast and fluid performance - What you do is what you see.
I've played with terrain generation before. Assuming the objective is a bitmap I found a way to make things like rivers and in general make it look better: Erosion.
Once you have terrain generated by other means erode it a bit: You need the world expressed as heights of pixels. Take a spot on the map and move one unit of height to the lowest neighbor. Move the cursor to this neighbor and repeat until it doesn't move. Repeat for other pixels.
To make rivers count the number of times you pass through a location moving bits down. Spots that get hit the most are rivers.
Followup: I wasn't eroding each pixel so much as simply a large number of random pixels until it weathered enough. The reason for actually eroding them is that this carries bits down and fills in holes. Without that there can be no rivers as there will be dead that trap the flow--the flowing pixels fill in any small holes and make working waterways.
Sorry I can't give any samples, this was many years ago and while the old code is probably around somewhere I don't know where to look.
Terrain is created by a myriad different causes over many different time-scales. In order to truly create realistic terrain, you'd have to simulate these.
In the "short" term, the hydrosphere determines most of the characteristics. You can probably start with a voxel/particle/heightmap/mesh terrain containing major features (mountain ranges etc.) and treat it as immutable, then post-process it with a plethora of water simulations. You'll need to compute where the rivers and lakes will be, how they erode the base landscape, and where they form deposits. If I had to code this I'd probably start with a 3D voxel world.
This would be a gargantuan task and I'm sure there are lots of tricks available for generating specific terrain types that take milliseconds instead of minutes. What kind of terrain are you looking to create? Mountainous? Lowland? Industrialised? Forest? Desert? Archipelago?
Long story short: if you want terrain that looks realistic to humans (who tend to be, after all, experts on this kind of thing), you'll have to create it by simulating actual geological processes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With