# Distribution

Skatter offers several distribution types, each useful in different situations: [Grid](/manual/distribution.md#grid), [Random](/manual/distribution.md#random), [Uniform](/manual/distribution.md#uniform), [Vertices](/manual/distribution.md#vertices) and [Face centers](/manual/distribution.md#face-centers).

![Random - Uniform - Grid](/files/-MkDGcgf9qYU7iptYB4v)

## Grid

The *Grid* distribution is perfect for scattering instances at regular intervals. It also allows you to inject a bit of randomness with the `Jitter` and `Holes` parameters.

![](/files/-MkCzbK9bIvMAdtJVZD-)

| Parameter | Description                                                                 |
| --------- | --------------------------------------------------------------------------- |
| Spacing   | Distance between successive instances                                       |
| Shift     | Global offset of the grid                                                   |
| Jitter    | Percentage of the `Spacing` parameter that instances will be moved randomly |
| Rotation  | Angle of the grid in degrees                                                |
| Holes     | Percentage of instances to discard randomly                                 |

{% hint style="info" %}
For some parameters, two `X` and `Y` values are available. For [surface hosts](/manual/hosts.md#surface-hosts), both are used. For [curve hosts](/manual/hosts.md#curve-hosts), only the `X` value is used.
{% endhint %}

## Random

The *Random* distribution scatters instances randomly all over the hosts.

Unlike the [Uniform distribution](/manual/distribution.md#uniform), this distribution type does not scatter instances in a homogeneous manner and some clumping may appear, which may or not be desirable depending on your goal. A benefit of random distributions, however, is that they are significantly faster to compute.

![](/files/-MkD-Sk_2_7kDt9IRXy9)

| Parameter | Description                   |
| --------- | ----------------------------- |
| Density   | Target density over the hosts |

{% hint style="info" %}
While the Density parameter is displayed as *obj/unit²* in the user interface, this only applies to [surface hosts](/manual/hosts.md#surface-hosts). For [curve hosts](/manual/hosts.md#curve-hosts), the value is actually interpreted as *obj/unit*.
{% endhint %}

## Uniform

The *Uniform* distribution scatters instances homogeneously all over the hosts. Compared to [Random distributions](/manual/distribution.md#random),  instances are more evenly spaced, which produces more natural-looking results in some situations (like a grass field).

![](/files/-MkD-YhnGPDAZaKXFU3c)

| Parameter | Description                   |
| --------- | ----------------------------- |
| Density   | Target density over the hosts |

## Vertices

The *Vertices* distribution places one instance at each vertex of the hosts.

![](/files/-MkD0DK1BhNiycr_Lv48)

| Parameter | Description                                 |
| --------- | ------------------------------------------- |
| Holes     | Percentage of instances to discard randomly |

## Face centers

The *Face centers* distribution places one instance at the center of each face of the [surface hosts](/manual/hosts.md#surface-hosts). For [curve hosts](/manual/hosts.md#curve-hosts), it scatters instances at the center of each edge.

![](/files/-MkD0O7Va8lEMWlzZ4xT)

| Parameter | Description                                 |
| --------- | ------------------------------------------- |
| Holes     | Percentage of instances to discard randomly |

## Projection modes

[Grid](/manual/distribution.md#grid), [Random](/manual/distribution.md#random), and [Uniform](/manual/distribution.md#uniform) distributions have a `Mode` parameter that controls [how scattered instances are projected onto surfaces](/manual/things-to-know.md#projection).

In `World space` mode, instances are projected in the direction of the global `Projection axis` parameter. In many cases, the default axis (`-Z`) is good enough since we often want to scatter instances over flat horizontal surfaces. In cases when surfaces are not horizontal, like for green walls, then the axis can be changed accordingly.

![In World space mode, only top faces receive instances.](/files/-MkDA8xrEbnGfKGfv3uK)

In `Object space` mode, the behavior is similar. However, the `Projection axis` parameter refers to each host's local axis. This means that the scattering will be consistent whatever the host's orientation. This is also convenient if a composition possesses several hosts with different orientations.

![Object space. Notice the component axes.](/files/-MkD92oB-6VGZiLqJjfC)

In `Face space` mode, instances are not projected from a single direction anymore. Instead, each face of the host is populated individually. This makes it possible to generate scattering all over non-flat hosts.

![Face-space](/files/-MkD9jVLUyH1Os-zE6ZZ)

{% hint style="info" %}
In Skatter 1, a similar behavior could be achieved with the `Wrap (UV)` mode. However, it was only compatible with random distributions.
{% endhint %}

## Zones

*Zones* let you group similar objects together, like patches of flowers in a field or lawn.

![](/files/-MkDJrH13fzP91jmu2fN)

| Parameter | Description                                      |
| --------- | ------------------------------------------------ |
| Size      | The approximate size of each zone                |
| Blur      | Smoothness at the boundaries between zones       |
| Noise     | Randomly mixes objects to introduce more variety |

By default, each zone will contain a single type of object. However, if you organize your objects into [object groups](/manual/scattered-objects.md#object-groups), then you can produce zones that contain different objects.

It's also possible to create empty zones without any object by creating an empty object group and setting its probability as desired.

![](/files/pEpUS65dB5n4ToG8cQmm)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://skatter.help.lindale.io/manual/distribution.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
