I've been recently studying procedurally generated terrain using two dimensional Perlin Noise. I'm using Unreal Engine 4 blueprints as a way to prototype, but will soon transfer to C++.
I have an array of vertices that construct a two dimensional plane. I run Perlin Noise over each vertex to get a random noise value, and then assign it to that vertex's Z value. This has yielded very nice looking terrain; but it is only a plane. There are no cave systems or anything of the type. This piqued my interest.
I researched a little about 3D Perlin Noise, but I really don't understand how it works. The 3D Perlin Noise function takes the X, Y, and Z positions of the element's location, and outputs a value. But what does this value do? The 2D Perlin Noise assigned the value to the third dimension, so does the 3D function assign it to a fourth dimension? How is this value actually applied to the terrain?
I am fairly new to this area of programming, any advice or knowledge would be greatly appreciated.