More on Procedural Content Creation
I’ve done some more work on the procedural content creation. I decided to add a new pipeline for making globe height-textures. This task was a bit more challenging than the valley height pipeline creation and some basic graphics elements had to be added.The globe creation pipeline looks like this:
- 1) Generate random noise
- 2) Apply a Gaussian aggregation (discussed below)
- 3) Make seamless (discussed below)
- 4) Filter through an emphasize to draw out the highlights and low areas
- 5) Normalize it so that each value is between 0 and 1
- 6) Apply a Gaussian blur to soften the image
- 7) Transform the matrix into a grey-scale image
- 8) Create a sphere object using sphere coordinates, then transforming them to Cartesian coordinates. A look-up is made from the height-map image to the radius of each vertex for each sphere vertex; this is basically what creates the terrain
I did some experiments with fractal generation of terrain. That is a good approach but is more suitable for making smaller areas, clouds and plasma and such stuff. It is also much slower than the method I came up with, Gaussian aggregation.
The Gaussian aggregation is an idea I had for making lumps, in this case the lumps are suppose to represent continents on a globe. This method works very well when working with smaller images on the size of < 300 resolution points (not pixels necessarily). Higher resolutions like that sort of reveal some flaws with this method. It works at those resolutions but it starts looking less and less like continents and oceans.
The method works by an average aggregation effect. By creating a completely random image, there are bound to be areas that have a higher density if bright pixels and some areas where the regional average is lower. The Gaussian aggregation works by checking out each area of the image, if the area is higher than a given threshold,the pixel is brightened, if it is below, the pixel is made darker.
Possibly the weakest link is the function that makes the image appear seamless. The method I currently use scales very poorly and already becomes apparent at unit sizes > 100. I must do some more research into how make the image truly look seamless since this is suppose to be a texture that wraps around a globe. I’m going to look into what other researchers have found out on this topic.
As usual I have uploaded the source code as well as a running version of the program, feel free to have a peek and email me if you have any questions or inquiries.

Leave a Reply