Domain Warping

One of the key building blocks in Eden is the idea of building landscape features and details out of simple shapes, then using noise to distort them in a way that makes them look more realistic. This technique is called domain warping.

Here’s an example I did years ago in Inkscape to see if I could get the kind of results I was looking for from this approach:

As you can see, the results from a set of pretty simple inputs are quite pleasing.

Oh, and If you’re wondering what that fill texture is, just a desaturated tiling texture of tetris block shapes. It’s a particularly useful technique, not only does it have a really good look to it, it also has a tendency to create long windy paths (that are interesting to explore). And for an added bonus the desaturation of the colored blocks when used as a heightmap results in an interesting range of vertical variety.

If you’re interested in what this map looks like in 3D, here are a bunch of screenshots of an environment I did using it way back in my UDK days 🙂

So that actually looks sort of good, does that mean we’re done?

Mmmmmmm… no 🙂

Where it gets Tricky

So let’s say we wanted (for arguments sake) to spawn a bunch of buildings along one of the banks of one of those neat looking rivers that are running inland from the coast. In a small hand crafted level it’s not a big deal, you just manually position them around using standard level building tools.

But what if we wanted to do not just one river but all rivers around an entire planet? Now it’s a problem… that’s way too big to populate by hand.

We could do all sorts of fancy heightmap analysis and edge / contour detection stuff, but that stuff can get real complicated, real quick (not to mention expensive performance wise in a real time 3d context). I’m not saying you should never do it, but what if there was a better way?

To be continued…