Daggerfall Unity is an open source recreation of Daggerfall in the Unity engine, adding quality of life features and mod support.

Report RSS Streaming World - Improving Terrain Noise

Switched height sampling to large height map and implemented bicubic interpolation.

Posted by on

I decided to take a step back and have quick look at my base terrain generation. I wasn't very happy with the overall appearance and contours of noise, and smooth noise functions alone weren't enough to achieve the desired result.

To fix this, I changed my mind about using the the large height map data (sometimes called the noise map) which is also in WOODS.WLD. If you're not familiar with this additional map, it is a 5000x2500 version of the 1000x500 height map I showed in part 1. Not all of this map is usable as there is a grid-like pattern overlayed with an unknown purpose.

Below are 3x3 terrains with city of Daggerfall in the middle. I have increased height scale so any deformations are more visible. This is basically the terrain from my previous article with all noise removed. Bilinear interpolation is used to smooth transition between height samples.

SmallHeightBilinear

This really isn't very interesting. Next I'm going to use the large height map, which has 3x3 samples per terrain instead of 1x1. This looks like the following when using nearest-neighbour interpolation.

LargeHeightPointSamples

There's definitely more sample points, but it resembles Minecraft more than Daggerfall. Let's smooth things out a bit using trusty bilinear interpolation.

LargeHeightBilinearSamples

Ouch, that's still really ugly. With more sample points, bilinear isn't really an appropriate choice anymore. The next best thing is bicubic interpolation.

LargeHeightBicubicSamples

Much better! Bicubic ensures a nice continuous curve through all sample points and provides a more interesting base terrain compared to the very first screenshot. I am much happier with this as a starting point.

So far, all this data is being read from Daggerfall's files. I haven't added anything besides scaling up the height. As before, I will use a bit of smooth noise to add fine details at ground level and flatten out the city areas.

Now that's out of the way, I can go back to improving other aspects of terrain quality.

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: