Hi everyone, welcome to this series on procedural
landmass generation. So just as a quick overview, we're going to begin by generating height
maps using perlin noise, then we'll assign terrain types to the various height ranges,
and finally use all this information to construct our 3D mesh. So in this introductory episode, I'd just
like to talk a bit about noise. This here is regular noise, with values for each pixel
picked randomly between 0 and 1. Perlin noise, however, is a type of coherent noise, which
means that changes occur gradually. So if we were to take a slice of this noise, we
would get something that looks like a section of mountainous terrain. Just two quick bits terminology you're most
likely already familiar with - when we talk about amplitude, that's the y axis, while
frequency deals with the x axis. But back to our mountain. Currently it's too
smooth - we need a way to add in detail, while preserving the overall shape, and we do this
by layering multiple levels of noise. So here in blue we have 3 noise maps, commonly referred
to as octaves. In red we have the result when all of these octaves are added together. So if the first octave represents the main
outline of the mountain, then let's imagine the second octave as the boulders, and the
third as just the small rocks. So we want each subsequent octave to increase in detail,
and to control this, we add a variable called lacunarity. The frequency of octave one will
be lacunarity to the power 0, for octave 2, lacunarity to the power 1, and so on for however
many octaves we have. So if I were to set the lacunarity variable equal to 2 for example,
we would get frequency values of 1, then 2, then 4. Now as each octave increases in detail, its
influence should diminish. This makes sense in our mountain analogy - the smaller the
rock, the less effect it should have on the outline of the mountain. So, enter a new variable
- persistance. We now set the amplitude of octave 1 equal
to persistance to the power 0. Octave 2, persistance to the power 1, and so on. Using a persistance
value in the range (0 to 1) now enables us to affect how rapidly the amplitude decreases
with each octave. If we set the value of our persistance variable
to a half, octave 1 will have an amplitude of 1, octave 2 an amplitude of a half, and
octave 3 an amplitude of a quarter. So by doing all of this we've now achieved
a far more natural looking outline. If we consider this setup applied to a 2d
map, you can see that increasing the lacunarity value essentially increases the number of
small features, while modifying the persistance value affects how much these small features
influence the overall shape of the map. So that concludes this little intoduction,
in the next video we'll begin our actual work on the heightmap generator.
Until then, cheers.
Keen for the rest of the tutorials keep it up
Extremely well done. In particular:
I really enjoyed this, and am looking forward to more.
Keep up the great work!
This is exactly what I've been needing! Any idea on a release schedule? This is fantastic!
I'm currently going through your procedural cave tutorial series, which I've learned a TON of stuff from. I shared out that series with the other devs on my team at work, and they all had high praise for it too. Brilliant stuff, and I plan on going through the rest of your tutorials over time.
I'm really looking forward to the rest of this series. Keep up the awesome work.
I also backed you on patreon, and I recommend that other folks do as well.
Excellent, looking forward to the next lessons, thank you.
Very excited for this series!
That was really well done, I can't wait for the rest.
Amazing video! You definitely earned yourself a sub!
Really well put together video. Can't wait for the rest