Learning plants scattering rules

Let's start with our biome that contain one single species. Here, its a simple bush. Let's setup a terrain with a first level soil. To focus on plant scattering rules and only on these rules, the density of bushes for that terrain is set to all white. We then see something like that - using the default biome parameters for that species:

For that sample model this is around 1 million instances of the bush that are scattered throughout the landscape with a viewing distance set to 500m (start fading) - 800m (end fading). If we select the bush in the biome view, we'll have access to its spreading parameters:

Plant weight

The weight of a plant in a biome is its relative influence in its category. At the time a plant needs to be spreaded out, NDunes will evaluate for each plant category (grass, bushes, stones and trees) the list of candidate plants. A plant is a candidate if:

Then NDunes will choose a candidate based on the relative weights of plants that can be selected at the evaluated seeding position.

The weight has another behavior in the sense that it can be used to reduce the density of plants in an area. In the example below, we'll use two grass patches. The left side image uses a 100% weight for each plant, resulting in even chances for each plant to be selected. The right side image uses 15% weight for each plant, still resulting in even selection chances, but with a total weight of candidates reaching 30%. Consequently, NDunes reduces the density as it can't find enough valid candidates to reach the specified terrain density level:

Plant spawn angle limits

The "Spawn angle min / max (°)" parameter rules the slope of the terrain over which the plant is allowed to grow. By default a plant can be seeded on flat grounds (zero degrees) up to 45 degrees slopy areas. This can be changed to have plants dwell on different surfaces of the landscape. Below is an example with the plant angular limits set to 0 - 10 degrees:

Plant spawn bending angle

When seeded, a plant can grow up or laterally, following the slope of the landscape it's grown over. This is the "Spawn bending (%)" parameter that defines in which direction the plant will grow. At 0% if grows vertically at 100% it follows the landscape normal. Let's consider an example with a plant seeded on steep slopes (40-60 degrees), with a Spawn bending set to 0% and 100% (the density has been lowered for a better understanding):

Plant spawn bending randomness

It's then possible to add a random perturbation to the spawn direction, this is called the "Spawn bending randomness (%)", which is a percentage that can be used to modify the directions finally chosen for the plant to grow. Practically, use wisely for plants, abuse of it for stones like objects. Below an illustration using a tall tree model instead of our bush:

While this should be carefully used for vegetals, this parameter is often really useful to add variations on stones and rock meshes over the ground. Below is a desert terrain sample with lots of rocks scattered over the ground. The randomness is very high. The number of big rock models used is very low (only 3):

Plant spawn depth in ground

Finally a plant can be buried into the ground of a variable offset using the "Spawn depth in ground min / max (m)" parameter. This is a bounded offset in meters that is either added or subtracted to the spawn position to reposition the plant, as illustrated below:

Plant spawn scaling factors

A plant's size can be tweaked from the initial size that has been used to define it, by specifying scaling ratios. Expanding these ratios allow wider variations of a single "plant" as illustrated below:

Smaller plants at domain limits

It may be useful to automatically reduce the size of plants when we reach the border of the density domain for that plant. This illustrates for instance the fact that we can see smaller trees on the edge of a forest or smaller grass patches when the soil gets too dry. This is an option that can be toggles by checking the "Smaller at border" checkbox. Below is an example with no size reduction on the left side of the image and the same scene with the "Smaller at border" option being checked on:

The size reduction starts when the density falls below 50% and when the slope is above 50% of the slope interval in which the plant is allowed to grow.

Clustering plants

The idea is that some plants grow in tight groups rather than evenly scattered over a surface. There are actually two mechanisms to do clustering. One of them is to use biome areas (see here: Using biome areas) the other is to create a cluster of a given size in meters with a sharpness factor. This'll automatically group plants based on a thresholded noise set at the frequency of the cluster size. An illustration is shown below:

Using temperature and rainfall

Temperature and rainfall controls are very important parameters, mostly for biomes that have to cover large Landmasses areas on planetary Atlases. The atlas of a planet defines the "temperature lapse rate" which is the decrease in temperature every 100 meters of altitude (this is the Earth default, but this value can be freely modified). Therefore the temperature over a terrain is not a constant value. It decreases as we go higher. Then, species can be set to only dwell in between a minimal and maximal temperature. The same goes with rainfall.

Let's see this with a clear example using snow (see details here: Adding snow):

In the image above, the single picea tree we've used in the biome has a minimal allowed temperature set to 1 degree. Consequently, it won't be spreaded out in high altitudes where the temperature drops below 1 degree, plus a fade-out margin.

Practically, there are some temperature and rainfall domains margins:

So in the example above, this means that the tree will grow up to 0.5 degree instead of the 1 degree specified. Then, this allows us to use other plants for the snowy part of the terrain, adding snow covered trees for instance.

Using biome areas

Biome areas are defined on soils. See here for all details on how to create a biome area: Creating biome areas. Then, the name of a biome area can be entered in the plant's parameters to specify where that specific plant should be spreaded out. This can be very useful to define accurate plants areas such as fields:

The image above is a closeup of the example scene with fields used in the soil documentation. 4 biome areas were defined in the soil document. These areas are then used to specifically assign plants by typing the exact names of the areas in the corresponding entry. Here an example with the dry corn model of the scene:

Biome areas will work only when defined on a first level soil and then entered as a region area filter in the plant's spawning parameters.