Procedural Terrains

_images/terrain_proc_intro.png

Mirage can generate terrain meshes using real-world measurements, while also make useful vertex groups and applying different features (such as erosion or strata). Vertex groups are generated as needed: groups for Height and Slope are always created, while Below sea and Plateau depend on those settings being used.

Detail Level

The detail level setting controls how many vertex the terrain mesh will have. Increasing the level of detail will increase calculation time and memory usage.

Mirage offers three basic levels: normal, medium and high. There’s also a custom option to fine tune the level of detail (see below)

Terrain meshes are created from a plane subdivided in segments. The vertex count results from how many segments are used. For instance, the Normal level of detail has 128 segments, resulting in 16,384 vertices (128x128 = 16,384).

Normal and Medium are usually good enough for everything (specially when used with subdivision and multires). High is great if you are creating a massive terrain and don’t plan on changing it much.

Mirage will always generate the same terrain for the same seed, so you can use the different detail levels to bake higher detail into meshes with less geometry. Check the Blender manual for more information on baking

_images/terrain_proc_detail.jpg

Warning

Watch out for memory usage when generating many terrains with high detail levels. Blender will keep data around for undo, making RAM usage grow and grow. Save and restart Blender if you see memory usage in the info bar growing too big.

Custom detail level

It’s also possible to select a custom level of detail besides the basic three. Simply select Custom in the detail level menu.

You will see two new settings: segments and seed grid.

Segments

This controls how many times the plane will be subdivided. Increasing this setting will increase vertex count. Note that this number will be rounded automatically according to the base grid.

Seed Grid

Increases the amount of fine detail in the terrain. Mirage’s algorithm uses a base grid of white noise to generate the terrain. By default this grid always has a size of 100x100. However you can increase this up to be the same as the number of segments (getting the biggest amount of detail).

Note

Changing the Seed Grid setting will give you a different terrain, even with the same seed!

Generating to heightmap

You can also generate a terrain straight to a heightmap without making a mesh. Toggle the “Heightmap only” checkbox to enable this mode. When you switch to Heightmap only you will notice the vertex count below the detail setting becomes a pixel count. You will also notice a new dropdown that lets you select how to split the heightmap.

You can choose to split the heightmap into several smaller images. The options range from a 2x2 grid (4 images) up to 32x32 (64 images). When exported these images will be named like “[NAME]_x0_y0” where x0 and y0 are numbers representing the position of the image in the grid.

_images/terrain_heightmap.png

General Settings

Size

Set the size of the terrain in real world units. This affects the X and Y axis.

Max Height

Set the vertical scale. The terrain will always start at zero on the Z axis and go up to this value. Note that if you increase the Size value you should also increase Max Height, or the generated terrain will be flatter.

_images/terrain_proc_maxheight.jpg
Plateau

Create plateaus (or mesas) by clipping the terrain at this height. If this value is higher than Max Height it will not affect the terrain.

_images/terrain_proc_plateau.jpg
Sea Level

Make everything below this height flat (set to zero). Note the terrain will be moved down so it rests on 0 in the Z axis. This setting will make the final height of the terrain shorter.

_images/terrain_proc_sealevel.jpg
Roughness

Set how coarse the terrain is, and how many small details and perturbations it has. Small roughness will produce very smooth dune-like terrains, while higher roughness add lots of small peaks and valleys.

_images/terrain_proc_roughness.jpg
Alpine

Increase difference between valleys and peaks. Peaks become more vertical, while valleys and plains become flatter.

_images/terrain_proc_alpine.jpg
Deformation

Make the terrain more “twisty” and increase the amount of ridges.

_images/terrain_proc_deformation.jpg
Seed

This is a number used to initialize the terrain algorithm. Different values will produce different terrains, however a specific seed will always generate the same.

Auto-seed (clock icon)

Use a different seed every time a terrain is generated. The seed value will be updated, so you can un-tick it if you find a seed value you would like to keep.

Modifiers

These are optional effects that can be applied to the terrain. You turn them on and off by ticking the checkboxes next to them. Select them to see a short description and their settings. Modifiers are listed in the order they are applied.

Material

_images/terrain_proc_material.jpg

Add a default Cycles/Eevee material to the terrain

Add vertex color groups

Convert the generated vertex groups to vertex color groups that can be used inside Cycles and Eevee as masks.

Add procedural textures

Adds default procedural textures to the terrain. This includes custom node groups for Sand, Dirt/Ground, Rock and Snow. If this option is not enabled the default material will include empty image groups instead.

Whether Procedural Textures is enabled or not, the material will also include several masks to control the coverage of snow/dirt/rocks/sand. These masks are controlled by the Height Mask and Slope Mask node groups (depending on the kind of texture) and they include a Colorramp node to tweak them. The Settings frame gives you a central place to modify the masks quickly.

The procedural textures are stored in a nodegroup for each. Their settings include a Vector input for coordinates, one or more Color inputs for the texture, a Scale control and a Bump Intensity slider that controls the Bump output.

Each nodegroup outputs a color map (Diffuse), a roughness map and a greyscale bump map.

Strata

Make the terrain stratified (step-like)

_images/terrain_proc_strata.jpg
Frequency

How many “steps” to use

Strength

Set how much this effect changes the terrain

Invert Slope

Invert the direction of the slope between steps

Thermal Erosion

Simulates loosening and clumping of soil because of temperature changes.

_images/terrain_proc_thermal.jpg
Repose Angle

Angle at which the terrain material piles without slumping. Decreasing the angle will flatten the terrain more. It’s also know as the Talus angle.

Strength

Set how much this effect changes the terrain

Fluvial Erosion

Simulates erosion caused by rain.

_images/terrain_proc_fluvial.png
Iterations

How many times to run the algorithm

River Iterations

How many times to run the river carving algorihtm (per iteration)

Fluvial Erosion Rate

Amount of sediment moved each iteration

Rain Amount

Amount of rain for each iteration

Soil solubility

How quickly water is saturated with sediment and stops carrying

Deposition Rate

How quickly sediment is deposited as water slows down

Carrying Capacity

How much sediment can water carry

Evaporation

How much water evaporates each iteration (percentage per grid square)

Smooth Falloff

Gradually lower the height of the terrain to zero. This can be done along one or two axis independently (linear) or in a circular way (radial).

For the Linear factor these settings are repeated twice, for the X and Y axis.

_images/terrain_proc_slopes.jpg _images/terrain_proc_radial_falloff.png
Type

The type of falloff: Linear or Radial

Factor

The smoothing factor.

Minimum Height

Set a percentage of height as the lowest the effect will go. Only used in Linear falloff

Invert

Invert the direction of the effect along it’s axis. Only used in Linear falloff

Invert

Invert the terrain heights.

_images/terrain_proc_invert.png

Blocks

Apply a voxel-like effect to the terrain. This effect will change the vertex count of the terrain. Note that this can be super slow with large terrains and/or high levels of detail in blocks.

_images/terrain_proc_blocks.png
Detail Level

Amount of cubes used to represent the details of the terrain. The lowest setting (4) creates large blocks and results in a lower amount of vertices, while the highest (9) will create small blocks and increase the vertex count.

Bevel

Add a bevel modifier to the terrain.

Diorama

_images/terrain_proc_diorama.jpg

Generates a cube that can be used to represent a cross-section of the ground below the terrain. This modifier extends terrain generation underground, creating a Diorama-like effect.

The cube is an indepentent object parented to the terrain. It also has all its transformations locked for convenience.

Due to limitations in Blender API, the diorama cube can’t be auto updated when the terrain is modified (for instance sculpted). To make the diroama fit an updated terrain, look for the Update Diorama button in the tools panel.

Extrusion length

Height of the diorama cube. This will not change the position of the terrain, the cube grows “down” instead.

Add a material

Add a default Cycles/Eeevee material

Add procedural textures

Add basic procedural textures to the material. This includes three custom node groups for different ground levels and underground water. If this option is not enabled the default material will include empty image groups instead.

Island

_images/terrain_proc_edge_island.jpg

Simulates an island by smoothing the terrain and adding an plane with the ocean modifier. The ocean includes a default material and is automatically animated (using a driver).

Terrain smoothing

Controls the smoothing factor for the terrain. This is the done in the same way as with the Smooth Falloff modifier using the radial option.

Turbulence

Water turbulence. This controls several settings in the material and the ocean modifier (wave, wind velocity and the animation speed).

Foam

Enables foam generation in the ocean modifier and the ocean material.

Water Color

Color of the water in the material.