Website powered by

Landscape Generator in Blender

Hey everyone. I wanted to share a pretty big project I've been working on for quite some time in Blender. Using geometry nodes as well as shader nodes creating a large landscape generator that can produce almost drone like aerial views without a single image texture with everything beinh procedurally random generated.
The setup is essentially split in two parts. The geometry nodes are handling the generation of the branching river system and the subsequent basic terrain generation using geometry proximity to calculate the height offset by the distance to the river in an accumulative way per branch iteration. Creating a basic terrain mesh.
Then the height information, river distance and normals are being passed over to the shader
The shader is where the in my opinion bigger part of the magic happens. Using voronoi I'm breaking up the landscape into smaller parts, first its forest or no forest, for the no forest part I'm using a smaller voronoi which is determining meadow or no meadow and for the no meadow I'm using an even smaller voronoi to determine whether something is an empty or an occupied field or an orchard.
The forest sections use three stacks of slightly different voronoi bubbles on top of eath other which, driven by a noise texture, alter between by the power of 1.5 or 0.2 creating either a bulbous tip or a pointy tip. Thus differentiating between conifer and deciduous trees. Obviously I'm altering the color as well.
The fields are randomly rotated by the voronoi one layer above them. I'm using a wave texture to create the normal field texture. Indenting for empty fields, mixed with a bit of the meadow texture which seemed natural to me. The occupied fields are various shades of green (I should some yellow golden ones as well I guess) and are denting outwards.
Unlike for the forests I'm not using voronoi for the orchards. Instead I'm scaling down the texture coordinates and wrap them between - 1 and 1 and then using a circular gradient texture for the trees. Using white noise I can create a random ID for each tree and row and can randomly turn off trees and rows, giving it a more ordered feel.
Between the voronoi I'm also using the distance value to create small paths between the sections. Also randomly determined by the voronoi cells whether or not a path should appear.
The informations passed on by the geometry nodes are used for a few things. The normals are useful to distort the voronoi textures and get them conform with the terrain. Since the displacement of the material is altering the normal normal input, its easily creating unwanted texture shifts. I'm also using the normals to determine the steepness, for additional forest areas and eventually rock walls.
Using those informations I'm merging everything to a color pass and a heightmap. The heightmap I'm using for mesh displacement creating an almost Google earth like look for the trees. Especially helpful is the adaptive subdivision surface in the cycles experimental mode.
And that's the whole magic. I hope you guys believe me when I say I'm exhausted, though not yet finished.