Planetary perlin noise? My oceans are too patchy.


I've been working on a simple planet generator. I currently create a spherical mesh using a random radius for each vertex. This creates a very patchy looking planet as follows:

Ice Planet

I'm looking for a better algorithm of randomness. So I can have more 'planet' looking planets, or at least the option. I need bigger oceans, larger continents, basically just less patchy.

Anyone have any suggestions?

more ▼

asked May 14 '13 at 03:16 PM

Jazzer008 gravatar image

139 6 22 27

I don't have a definitive answer but here's what I can add: If you're using Perlin Noise, try doing multiple passes. After the first one, just randomize again, but on a smaller scale, just like Fractals, where it's recursive and repeats itself, while gradually becoming smaller and smaller. This will give a more definitive and less gloomy look, like real terrain.

Also if you want continents and oceans you're gonna need to define areas where the vertices' radius from the center is less random and more offset than others, either towards the center (ocean) or away from it (terrain).

In the end it all comes down to how random you want it to be, and how realistic, because creating an algorithm that could create earth-like planets that are completely random each time, would be very difficult.

May 14 '13 at 03:29 PM darksider2000

Yeah, I pretty much need less random areas, and then strict borders between them. That's what I'm looking for.

May 14 '13 at 03:50 PM Jazzer008

Take a slower walk through the perlin noise to reduce the resolution of the bumps. You could also use a grayscale bitmap instead of/in addition to the perlin noise. That way you could 'paint in' in the large continents.

May 14 '13 at 04:08 PM robertbu

But I would still like a procedural planet, what do you mean slower walk?

May 14 '13 at 04:16 PM Jazzer008

If you take a look at the example script for PerlinNoise() you will see:

var xCoord = xOrg + x / noiseTex.width * scale;
var yCoord = yOrg + y / noiseTex.height * scale;

The 'scale' changes how far to move for the next sample. If you move a smaller amount, you will move less on the 2D plane. It's like zooming in on a part of the plane so you 'see' less bumps.

May 14 '13 at 04:28 PM robertbu
(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

Try having a look at this white paper: Generating Complex Procedural Terrains Using the GPU

Especially chapter 1.3.3 "Making an Interesting Density Function" and onward, where the Density Function is what you want to use as your "random depth" on your vertices. They explain everything very well and it should be no problem to use it just on the CPU.

more ▼

answered May 14 '13 at 05:57 PM

Kibsgaard gravatar image

282 1 3

Wow thanks, at a glance that seems very useful. I think that will probably suit me best for now. : )

May 15 '13 at 12:38 AM Jazzer008
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments



asked: May 14 '13 at 03:16 PM

Seen: 770 times

Last Updated: May 15 '13 at 12:38 AM