# Welcome to Skatter

The most powerful Scattering Extension for SketchUp

* **First, make sure to read our** [**Getting Started**](/getting-started) **page**
* **Then, read the** [**Manual**](/manual/things-to-know) **and check out** [**Tutorials**](/tutorials)
* For general questions, please check the [FAQ](/faq)
* For other questions to the community and the dev team, please visit our [Forums](https://forums.lindale.io/c/skatter/16)

![© Phan Thức](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MgoMDTLxPQmsK9t71q5%2F-MgoR7cRivn31Vr8Zd6B%2Frender_only.jpg?alt=media\&token=9fb1b4d9-71de-4613-810f-bc6218aa624f)


# Getting started

{% embed url="<https://www.youtube.com/watch?v=b5FxMayG_fQ>" %}

Two steps to quickly get you started with Skatter:

1. [**Download Skatter here**](https://lindale.io/skatter?download)
2. **Install it, then start the 15 days trial**\
   Once the trial is expired, you can [purchase a license here](https://lindale.io/skatter#buy)

## Tutorial

### 1. Create a new composition

In Skatter, we call a distribution of objects a *composition*. A composition has many parameters (density, distribution type, filters...) and controls *what* is scattered ([objects](/manual/scattered-objects)) and *where* ([hosts](/manual/hosts)).

A SketchUp model can contain many compositions. For instance, a landscape architect could create a composition for grass, another one for a tree grove, yet another one for gravel on the ground, and so on.

There are several ways to create a new composition:

* Click the *New composition* <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkBdWY_-mMmBMyRLK9k%2F-MkBegLl0Q4c36Eha0nW%2FSkatter_logo_24.png?alt=media&amp;token=44229c69-7cc2-4164-94ee-a2dbbbb008dd" alt="" data-size="original"> button in Skatter's toolbar
* Click the *Composition manager* <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkC3TkHbsmQ0Z98TfiZ%2F-MkCwkgs1u1YC5ImSdcq%2Fcompositions_manager_icon.png?alt=media&amp;token=b730e9f1-33de-4bd0-9b05-02f81edd3c97" alt="" data-size="original"> button in Skatter's toolbar and then click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkC3TkHbsmQ0Z98TfiZ%2F-MkCwp18QMH9JdaY7Em1%2Fcompositions_manager_add.png?alt=media&amp;token=31a0b8f3-1d95-46d6-a9d5-8fc08b190bbf" alt="" data-size="original"> icon
* Use `Extensions > Skatter 2 > New composition` in SketchUp's menus

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkC3TkHbsmQ0Z98TfiZ%2F-MkCuUCAFoj7l5rxX-w_%2Fcreate_composition.gif?alt=media\&token=ea2c8272-7206-436c-8c0b-8cf159ace8af)

A composition is made of three main parts:

* The *What*: the [objects](/manual/scattered-objects) that you want to scatter. For instance, a tree model that you want to clone many times to create a forest.
* The *Where*: the location where you want to distribute these objects. In our forest example, that would be the terrain. These are the [hosts](/manual/hosts).
* The *How*: the parameters used to define how the objects are distributed. This can be the density, the objects' orientation, and other parameters used to fine-tune the distribution, such as [masks](/manual/masks) and [filters](/manual/filters).

### 2. Pick a host

We call the geometry that will receive scattered objects "[hosts](/manual/hosts)". Here, we select the terrain as a [surface host](/manual/hosts#surface-hosts).<br>

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkC3TkHbsmQ0Z98TfiZ%2F-MkCu8VcuSbwRzDsKmwW%2Fpick_surface.gif?alt=media\&token=d99e76a6-a331-4d93-ac4b-22fde72fbc28)

### 3. Pick objects to scatter

Now, select which [objects](/manual/scattered-objects) will be automatically cloned thousands of times by Skatter. We call each copy of an object that is scattered on the host an *instance*.<br>

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkC3TkHbsmQ0Z98TfiZ%2F-MkCub6V4dsWI-xg9FLn%2Fpick_objects.gif?alt=media\&token=bf2b9fe6-048f-4300-942e-6a082d4988b7)

### 4. Generate the composition

Click the Generate button to create the instances in the SketchUp model

Congratulations, you just made your first Skatter composition!<br>

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkC3TkHbsmQ0Z98TfiZ%2F-MkCufIo_kDQ2IdQXFcg%2Fgenerate_in_model.gif?alt=media\&token=19b1216c-cc64-4c82-b9e7-187f4b1bfea2)

Alternatively, switch to [Render only](/manual/generating#render-only-generation) mode. This time, instances won't be generated in the model, but they will be sent directly to your render engine (V-Ray in this example).&#x20;

This is very useful when you want to generate thousands of objects without slowing down SketchUp's viewport.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkC3TkHbsmQ0Z98TfiZ%2F-MkCuis9dgEpGneihUyQ%2Fgenerate_render_only.gif?alt=media\&token=cda53e13-7807-417f-b84a-aad8dfb301c0)

### 5. Draw a mask

There are [many types of masks](/manual/masks) available to restrict where objects can and cannot be scattered.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkC3TkHbsmQ0Z98TfiZ%2F-MkCuo6X_SpZ40Im6ckU%2Fmasks.gif?alt=media\&token=c478f229-f46e-4821-97f8-3054e2e51399)

### 6. 3D Bazaar

Browse the [3D Bazaar marketplace](/manual/3d-bazaar) to find pre-configured Skatter compositions, like grass, trees, etc.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkNLlZEwsnH0LLEXkaG%2F-MkNX3qYwPqURaESzeqf%2F3dbazaar.gif?alt=media\&token=954c4bf1-e1ac-4e63-b391-089e5bde8591)

### 7. Explore

You can now play with each setting to understand what they do.

All the parameters are described in [the manual](/manual/things-to-know), but there's nothing better than experimenting by yourself!<br>


# Tutorials

Reading the manual at your own pace is great, but sometimes being walked through by someone else via a video tutorial is better.

Check out these video tutorials made by us and other educators:

{% content-ref url="/pages/-MK0YYnpsE3qZUT66gEH" %}
[Getting started](/getting-started)
{% endcontent-ref %}

{% content-ref url="/pages/zY1koGYwfFom80m9DJQK" %}
[Creating Landscapes (Webinar)](/tutorials/creating-landscapes-webinar)
{% endcontent-ref %}

{% content-ref url="/pages/1N1Y9WeoJVibXDD0Nl33" %}
[Skatter for interiors](/tutorials/skatter-for-interiors)
{% endcontent-ref %}

{% content-ref url="/pages/MU7nbWUIX0rpYruWzp3S" %}
[What's new in Skatter v2](/tutorials/whats-new-in-skatter-v2)
{% endcontent-ref %}


# Creating Landscapes (Webinar)

In [this webinar](https://www.youtube.com/watch?v=1rHiohHzmQU) hosted by Archilime Academy, we presented how to model a landscape terrain, then how to populate it with vegetation using Skatter, 3D Bazaar, and Transmutr.

{% embed url="<https://www.youtube.com/watch?v=1rHiohHzmQU>" %}


# Skatter for interiors

In [this video tutorial](https://www.youtube.com/watch?v=Fxmg4LEGSiI), Modulus Render talks about how to use Skatter to add details to interior renders. Details like fur, fuzz, 3d textures and so on.\
Thea is used, but these technics can be applied to all rendering engines, like V-Ray and Enscape.

{% embed url="<https://www.youtube.com/watch?v=Fxmg4LEGSiI>" %}


# What's new in Skatter v2

TutorialsUp is at it again with [a very thorough walkthrough](https://www.youtube.com/watch?v=v_RkPXr5zLA) of the new features in Skatter v2.

{% embed url="<https://www.youtube.com/watch?v=v_RkPXr5zLA>" %}


# FAQ

{% content-ref url="/pages/aa5jlb1DfO5ADGE192Ng" %}
[I have lost or didn't receive my license key](/faq/i-have-lost-or-didnt-receive-my-license-key)
{% endcontent-ref %}

{% content-ref url="/pages/fNJXwk10ga8K4L02F03x" %}
[How can I reset my license activations?](/faq/how-can-i-reset-my-license-activations)
{% endcontent-ref %}

{% content-ref url="/pages/sBkWuCLOKf4gbQw1Ai1J" %}
[On how many computers can I use my license?](/faq/on-how-many-computers-can-i-use-my-license)
{% endcontent-ref %}

{% content-ref url="/pages/aCw5O2KD02rBKUbJoNRR" %}
[What are the software and hardware requirements to run Skatter?](/faq/what-are-the-software-and-hardware-requirements-to-run-skatter)
{% endcontent-ref %}

{% content-ref url="/pages/eagZfwOA7V4okOGaihxM" %}
[Where can I find plant models to use with Skatter?](/faq/where-can-i-find-plant-models-to-use-with-skatter)
{% endcontent-ref %}

{% content-ref url="/pages/efg9fyPpCiGM7Vw5hRX4" %}
[Why is my grass upside-down?](/faq/why-is-my-grass-upside-down)
{% endcontent-ref %}

{% content-ref url="/pages/pFoucDWKIRCUGkcLoXI3" %}
[Why are my scattered objects off-center?](/faq/why-are-my-scattered-objects-off-center)
{% endcontent-ref %}

{% content-ref url="/pages/sqAhHhQV2B053W43YzBE" %}
[I cannot activate my license due to a restrictive internet connection](/faq/i-cannot-activate-my-license-due-to-a-restrictive-internet-connection)
{% endcontent-ref %}

{% content-ref url="/pages/8LyOwjZpIMNNQFb4msJV" %}
[I'm a Render Engine developer, how can I support Skatter?](/faq/im-a-render-engine-developer-how-can-i-support-skatter)
{% endcontent-ref %}

## I have other questions that are not answered here

&#x20;You can find more questions and answers posted by users in the[ Skatter forums](https://forums.lindale.io/c/skatter/16).

If you still have questions, please write an e-mail to <skatter@lindale.io>.


# I have lost or didn't receive my license key

You should have received your license key via email.\
\
**Please check your spam folder** and remove the email from there, so that your Email Provider knows this is not spam.\
This is important so that other people don't get the same issue.

You can also **find and manage your licenses by creating an account** on our website using the email address you used when you purchased: <https://lindale.io/account/register>

If you still cannot find it, send us an email at `skatter@lindale.io`


# How can I reset my license activations?

If you are getting the error *"All the license seats are currently in use"* when trying to activate your license on a new computer, you first need to deactivate it on the other computers.

* On the old computers, open Skatter's "License" window
* Click "Deactivate"

You should now be able to activate your licenses on new computers.

You can also **manage your license activations by creating an account** on our website: <https://lindale.io/account/register>


# On how many computers can I use my license?

For each **perpetual or fixed-seat** license of Skatter, you can install it on **no more than two computers**, provided that it is used on **only one computer at a time**. For instance you can install it on both your desktop workstation and your laptop.

**Floating licenses** can be installed on **as many computers as you want**, but can only be used simultaneously on **the number of seats you purchase**.\
If it has one seat, it can be used on only one computer at a time. The application must be closed before someone else can use it.\
If it has 5 seats, it can be used on 5 computers at a time, etc.\
To purchase more than one seat, change the 'quantity' field during the checkout process.


# What are the software and hardware requirements to run Skatter?

**Software**

* Windows 7/8/10/11 64bits or Mac OSX 10.15
* Sketchup 2017+

**Recommended hardware**

* Quad-core 3+ Ghz processor
* 8+ GB RAM


# Where can I find plant models to use with Skatter?

The [3D Bazaar Marketplace](https://lindale.io/3dbazaar) contains hundreds of high-quality render-ready plants, both free and paid, that can be used with Skatter. Many of these assets are already pre-configured to be imported as Skatter compositions.

3D Bazaar is bundled with Skatter. Go to the [3D Bazaar section](/manual/3d-bazaar) to learn more.


# Why is my grass upside-down?

The grass assets use the [Pointing direction](/manual/transformations#pointing) parameter, therefore the grass follows the slope of the surface. If the surface is upside down, the grass will be upside down as well.

Try to right click on the face and click on "Reverse faces". Then in Skatter's Composition manager, click on ![](http://files.getskatter.com/docs/img/update.png) to update the composition.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MgawHZGhi7H9obFvbJV%2F-Mgaz-_4OtquYKbM5hJo%2Fupsidedown_grass.jpg?alt=media\&token=c63e19c2-927f-4b24-97c7-7f63f0878e9f)

##


# Why are my scattered objects off-center?

This might be due to the object's axes not being centered on the actual geometry.

You can either:

* Change the [Insertion point](/manual/scattered-objects#insertion-point) parameter of the object to `Center` or `Bottom center` to obtain the expected result without modifying the group/component.

**OR**

* Modify the axes of the group/component so that they are centered on the object.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MgawHZGhi7H9obFvbJV%2F-MgazEDKUHT7IpTw-dHX%2Fscattered_objects_offcenter.png?alt=media\&token=10257257-b8af-4f9a-bf60-6b46b49362c2)


# I cannot activate my license due to a restrictive internet connection

If you are unable to activate your license due to restrictive network settings (eg. corporate environment), you might encounter a "`A network error occurred`" error. In that case, the **Activate** button will transform into an **Activate Offline** button, giving you access to offline activation.

1. First, click the **Activate Offline** button to generate an *Offline Activation Request Code* that is tied to your license key.
2. Login to access <https://lindale.io/account/manage/licenses> (you may need to register if you have never created an account before)
3. Then click on your license > "Manage activations" > "Offline Activation/Deactivation"
4. Paste the *Offline Activation Request Code* that you got from the extension, and click "Activate"
5. Download the *Activation File* an load it in Skatter. Your license should now be activated.

A similar process is available to **deactivate** your license: the **Deactivate** button will transform into a **Deactivate offline** if you encounter network issues. This button will generate a *Offline Deactivation Request Code*.

{% hint style="danger" %}
**Using this deactivation request is mandatory** or your license will still be considered in use.
{% endhint %}

Contrarily to the activation procedure, deactivation is effective immediately and there is no need to validate it in a second step with an *Activation File*. Although you do need to add the *Offline Deactivation Request Code* in the license dashboard to free the activation slot on the serve&#x72;*.*


# I'm a Render Engine developer, how can I support Skatter?

Scattered instances are stored in an hash/array structure which can be read by render engines (or anyone for that matter). This is very similar to parsing the model and reading the transformation of regular Component Instances. \
This allows users to render hundreds of thousands of instances without overloading Sketchup.

The hash is in a shared namespace called **`Common`**, and its name is **`render_instances`**.

It is structured like so:

```
{ 
	Sketchup.active_model.definitions.entityID => { 
		plugin_name => {
			comp_def => [
				{:transformation => trans1, :material => mat1},
				{:transformation => trans2, :material => mat2},
				...
			]
		}
	}
}
```

* ***Sketchup.active\_model.definitions.entityID***  is used to differentiate models on OSX, as we can have multiple models opened in one Sketchup instance
  * ***plugin\_name***  is the plugin's name, in this case "skatter". This level is necessary so we don't overwrite each other's data
  * ***comp\_def***  is the [Sketchup::ComponentDefinition](http://ruby.sketchup.com/Sketchup/ComponentDefinition.html) of the scattered object. Each item of this array is an individual instance generated by Skatter.
    * ***:transformation*** is a [Geom::Transformation](http://ruby.sketchup.com/Geom/Transformation.html) that represents the instance's transform
    * ***:material*** is a [Sketchup::Material](http://ruby.sketchup.com/Sketchup/Material.html) assigned to the instance. If this is not defined or nil, simply consider this instance as having the default material applied to it, just like a regular Component Instance.

Reading this in Ruby is pretty simple:

```
modelID = Sketchup.active_model.definitions.entityID

if defined?(Common.render_instances) && Common.render_instances[modelID]
	for plugin_name, definitions in Common.render_instances[modelID]
		for definition, instances in definitions 
			for instance in instances
				
				transform = instance [:transformation]
				material = instance [:material]
				
				# Then do your stuff using definition, transform and material...
			
			end#for
		end#for
	end#for
end#if
```

Additionally, you can add an observer to the Common module, and Skatter will call it every time it updates. It is useful if you are doing Real Time rendering.

```
class MyObserver
	def on_render_instances_updated(model_id, plugin_name, definition)
	
		puts model_id.to_s + " -> " + plugin_name + " -> " + definition.name
		
		data = Common.render_instances[model_id][plugin_name][definition]
	
	  # Then do your stuff...
	
	end
end

Common.add_observer(MyObserver.new)
```

If you have any question or need a NFR license to test your implementation with Skatter, contact us at  <skatter@lindale.io>.

{% hint style="info" %}
This is an open protocol, so if other plugins use it, you will automatically support them as well.
{% endhint %}


# Things to know

## Skatter is non-destructive

Everything you do in Skatter is fully parametric and non-destructive. This means that you can always go back and edit your work, even after closing and reopening SketchUp.

A same set of parameters should always produce the same end result. If for some reason, you want a slightly different result than what you see on screen, simply change the `Random seed` value of a composition, or click on the "New seed" button in the Options section.

## Projection

For scattering and masking instances over surfaces, Skatter often uses projection. Here's how it works internally:

1. First, Skatter generates points on a flat plane, at the top of the surface's bounding box.
2. Then, all these points are projected down until they reach the surface.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-Mgo_ytdoKiC4JXBFrE1%2F-MgoeYDjANdUAWutI42O%2Fprojection.png?alt=media\&token=59db5f11-e481-411d-baeb-b54326884104)

{% hint style="info" %}
In this example, the projection is vertical (-Z).

However Skatter can use [any axis of projection](/manual/distribution#projection-modes), which is particularly useful for non-horizontal surfaces like green walls.
{% endhint %}

## Groups and Components

When picking [hosts](/manual/hosts) or [masks](/manual/masks), you can only pick groups and component instances. This is mandatory so that Skatter can keep track of those picked objects throughout sessions, and remain fully parametric.

## Units of measurement

If you don't specify a unit when entering a numeric value, Skatter will use the [model's unit](https://help.sketchup.com/en/managing-units-measurement) (note that this correctly works only when the Unit Format is set to Decimal, because of a [bug in SketchUp](https://github.com/SketchUp/api-issue-tracker/issues/723)).

However, you can override it by typing a unit (like `3"` or `12mm`) that Skatter will immediately convert to the model's unit.

When you change the model's unit, Skatter's data is automatically converted. In this way, there should be no issue when sharing SketchUp files between users with differents units.


# Generating instances

Skatter offers two modes for generating instances: [**In model**](/manual/generating#in-model-generation) and [**Render Only**](/manual/generating#render-only-generation).

## "In Model" generation

*In Model* is the default mode. It will create instances directly in the model, as regular SketchUp geometry.

The benefits of In Model generation are:

* ✔️ Instances are directly visible in the SketchUp viewport
* ✔️ No need for an external render engine
* ❌ It can significantly slow down the SketchUp viewport when generating thousands of instances

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkC3TkHbsmQ0Z98TfiZ%2F-MkCufIo_kDQ2IdQXFcg%2Fgenerate_in_model.gif?alt=media\&token=19b1216c-cc64-4c82-b9e7-187f4b1bfea2)

## "Render Only" generation

In *Render Only* mod&#x65;*,* instances will not be created in the model. Instead, the data will be directly handed to the render engines.

The benefits of Render Only generation are:

* ✔️ Better performance when creating large compositions with thousands of instances
* ❌ The instances are not visible in the SketchUp viewport after you close the Composition Editor

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkC3TkHbsmQ0Z98TfiZ%2F-MkCuis9dgEpGneihUyQ%2Fgenerate_render_only.gif?alt=media\&token=cda53e13-7807-417f-b84a-aad8dfb301c0)

{% hint style="success" %}
&#x20;Render Only mode is currently supported by V-Ray 5, Enscape, Thea, Octane, Indigo, Shaderlight, IRender nXt, Twilight Pro, Raylectron, and Kerkythea.
{% endhint %}

## Preview before generating

By default, Skatter automatically displays a preview in the SketchUp viewport when you work on a composition. When working on very complex compositions, the preview can take a little while to compute, so you can disable it by clicking the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkNAaNszlUeRWbyExvV%2F-MkNDTj_4gdHDm0mMdKk%2Fpreview.png?alt=media&amp;token=a90c1eb3-96f5-4365-a568-2502e7844a2e" alt="" data-size="original"> icon.

When working on a composition, you might want to preview another composition at the same time. Click on the arrow next to the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkNAaNszlUeRWbyExvV%2F-MkNESAd-uUmfJPZZNhV%2Fpreview_arrow.png?alt=media&amp;token=2ab974a8-83a8-4a69-8895-f5c520331cfc" alt="" data-size="original"> icon and select the other compositions that you want to display.


# Hosts

Hosts are entities on which thousands of instances will be scattered. They can either be [surfaces](/manual/hosts#surface-hosts), [curves](/manual/hosts#curve-hosts) or [point sets](/manual/hosts#point-sets).

## Surface hosts

A *surface host* is an entity that contains faces on which instances will be scattered.

To add new surface hosts, click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkDLbEREaCP1Q6PWnP3%2F-MkGTlTdGm5BFHPfRtFl%2Fpick_surface.png?alt=media&amp;token=a02cb36d-d2c0-4561-b00d-59a52efc13df" alt="" data-size="original"> icon and pick groups or components in the model. When you're happy with your selection, click anywhere in Skatter's interface to stop picking hosts.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkC3TkHbsmQ0Z98TfiZ%2F-MkCu8VcuSbwRzDsKmwW%2Fpick_surface.gif?alt=media\&token=d99e76a6-a331-4d93-ac4b-22fde72fbc28)

Another way to pick several surface hosts is to first select them in SketchUp and then click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkDLbEREaCP1Q6PWnP3%2F-MkGTlTdGm5BFHPfRtFl%2Fpick_surface.png?alt=media&amp;token=a02cb36d-d2c0-4561-b00d-59a52efc13df" alt="" data-size="original"> icon while pressing the Shift key.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkDJwTw-BEK9aHzpdQg%2F-MkDL3x2qm9BgG27OUiv%2Fadd_selected_hosts.gif?alt=media\&token=3e169eb7-fb1a-42c7-8ea4-2d6f00ec9bdc)

### Texture coordinates

Surface hosts have a `Texture coordinates` parameter that interacts with [image masks](/manual/masks#image-masks).

If the geometry of the surface host already has texture coordinates (coming from another 3D package or authored via another SketchUp extension), then one of the `Input` modes can be selected.

Otherwise, Skatter can generate new texture coordinates with other modes that match various shapes.

| Texture coordinates | When to use                                                            |
| ------------------- | ---------------------------------------------------------------------- |
| Input - Front       | Geometry already has texture coordinates on its front faces            |
| Input - Back        | Geometry already has texture coordinates on its back faces             |
| XY plane            | Flat geometry roughly aligned with the XY plane                        |
| YZ plane            | Flat geometry roughly aligned with the YZ plane                        |
| XZ sphere           | Flat geometry roughly aligned with the XZ plane                        |
| Sphere              | Sphere-like geometry                                                   |
| Cube                | Cube-like geometry                                                     |
| Automatic           | More complex geometry (this feature is experimental, results may vary) |

{% hint style="warning" %}
SketchUp only allows extensions to draw textures in the viewport since SketchUp 2020 so the preview of texture coordinates is not available for older versions.
{% endhint %}

## Curve hosts

A *curve host* is an entity that contains edges on which instances will be scattered.

To add new curve hosts, click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkDLbEREaCP1Q6PWnP3%2F-MkGTxLqzTs6-I-7kjvQ%2Fpick_curve.png?alt=media&amp;token=0306faf8-e6ac-4565-8fb8-e3b6b7e1caec" alt="" data-size="original"> icon and pick groups or components in the model. When you're happy with your selection, click anywhere in Skatter's interface to stop picking hosts.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkDLbEREaCP1Q6PWnP3%2F-MkGVW5d9aoJBmEoCvp7%2Fadd_curve.gif?alt=media\&token=a2525242-411a-48a9-89d1-2947e165f125)

Another way to pick several curve hosts is to first select them in SketchUp and then click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkDLbEREaCP1Q6PWnP3%2F-MkGTxLqzTs6-I-7kjvQ%2Fpick_curve.png?alt=media&amp;token=0306faf8-e6ac-4565-8fb8-e3b6b7e1caec" alt="" data-size="original"> icon while pressing the Shift key (see above for an illustration with surfaces.

### Aligning instances

Curve hosts have an `Align instance axis with curve` parameter to adjust the orientation of scattered instances. When enabled, each instance will be rotated so that the selected local axis of the object points in the same direction as the curve host.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkDLbEREaCP1Q6PWnP3%2F-MkGVu3XlIoMpN-Ktl5u%2Falign_instances_on_curve.gif?alt=media\&token=2282fccf-24f4-4e0c-b0d3-6b3869d1eddb)

## Point sets

A *point set* is a collection of positions that you can pick manually.

To add a new point set, click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGW2tw0LXFc47AV7-A%2F-MkGkRF8KPXba23v2dOp%2Fadd_points_set.png?alt=media&amp;token=3f1c243a-b582-4ace-a1dc-5aed4da87179" alt="" data-size="original"> icon and start placing points. Click anywhere in the Skatter interface to stop creating points. You can then click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGW2tw0LXFc47AV7-A%2F-MkGkUceXBVT6CeXQI0x%2Fpoints_set_pick.png?alt=media&amp;token=0a4756a6-ee8b-476e-b7e0-65fada1932da" alt="" data-size="original"> icon at any point to add new points to existing point sets.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGW2tw0LXFc47AV7-A%2F-MkGjNb6ydVszpsEFebu%2Fpoints_set_pick.gif?alt=media\&token=9ded8f54-a416-4691-9b83-81740b9f4fb7)

To erase points, click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGW2tw0LXFc47AV7-A%2F-MkGk_2gUsoySk491jt3%2Fpoints_set_erase.png?alt=media&amp;token=e3cd7816-4201-477f-8235-5663c41fa8b0" alt="" data-size="original"> icon and select the points to remove.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGW2tw0LXFc47AV7-A%2F-MkGjWsqNHLvMj7eQgnd%2Fpoints_set_erase.gif?alt=media\&token=8f4ca229-7c77-4559-b36e-9d12bd1ccf53)

{% hint style="info" %}
When placed on a surface, points are oriented according to the face normals. You can tune this behavior with the [Pointing](/manual/transformations#pointing) parameter of the composition.
{% endhint %}

### Converting existing objects into a *Point set*

It is possible to convert existing SketchUp objects into a *Point set* host. Select the objects in SketchUp, then right-click and choose *Skatter > Convert to composition*.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGW2tw0LXFc47AV7-A%2F-MkGvKBrKI-LOffa9B_u%2Fconvert_to_composition.gif?alt=media\&token=46a49d84-ea41-479a-9f74-646f0abcf285)

Each selected object will turn into an instance and will retain its position, orientation, and material. However, you can now apply Skatter's masks, filters, and transformations to them.


# Scattered objects

## Objects

An *object* is a SketchUp group or component that will be scattered thousands of times over [hosts](/manual/hosts). Each copy of a scattered object is called an *instance*.

To add new objects, click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGyk1zfPLyhhp0wLEQ%2F-MkGz2xrqs2NTJcR1KgP%2Fadd_objects.png?alt=media&amp;token=8d5f7adf-fb79-45c4-b3ee-bf6688a8b1cf" alt="" data-size="original"> icon and pick groups or components in the model. When you're happy with your selection, click anywhere in the Skatter interface to stop picking objects.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkC3TkHbsmQ0Z98TfiZ%2F-MkCub6V4dsWI-xg9FLn%2Fpick_objects.gif?alt=media\&token=bf2b9fe6-048f-4300-942e-6a082d4988b7)

Another way to pick several objects is to first select them in SketchUp and then click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGyk1zfPLyhhp0wLEQ%2F-MkGz2xrqs2NTJcR1KgP%2Fadd_objects.png?alt=media&amp;token=8d5f7adf-fb79-45c4-b3ee-bf6688a8b1cf" alt="" data-size="original"> icon while pressing the Shift key.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGw7pWnsm3FiQ0QZ3e%2F-MkGy5cpzA3GmuOiGz0H%2Fpick_selected_objects.gif?alt=media\&token=757cbcd0-b031-497a-a38f-30e8f181d995)

| Parameter        | Description                                                        |
| ---------------- | ------------------------------------------------------------------ |
| Probability      | Relative probability of the object to be assigned                  |
| Insertion point  | Local origin of the picked object                                  |
| Scale multiplier | Adjusts the size of the instance with respect to the picked object |

### Probability

By default, objects have a probability of 100% so a composition contains an equal quantity of each object's instances.

Probabilities are relative. For example, if object A has probability `300%` and object B has probability `100%` then object A is 3 times more likely to appear.

### Insertion point

The `Insertion point` parameter adjusts the final position of instances depending on its object's internal axes.

| Insertion point | Description                                                                                                                                                                                                             |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Origin          | Simply places instances using the axes of their group/component.                                                                                                                                                        |
| Center          | <p>Uses the center of the actual geometry contained in the object.</p><p></p><p>This is particularly useful when a group/component has off-center axes but we want to ignore this offset when scattering instances.</p> |
| Bottom center   | <p>Same as <code>Center</code> but at the bottom of the group/component.</p><p></p><p>This is particularly useful for objects like trees or street lights.</p>                                                          |

### LODs

LODs (*Level of Detail*) are placeholder objects that replace the main object depending on their distance to the camera.

They are typically used to replace a detailed object with variants with lower and lower resolutions as they get farther away from the camera, which enhances performance in the viewport and when rendering.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGw7pWnsm3FiQ0QZ3e%2F-MkGyhB8zg_KnCwz1FgC%2Flod.svg?alt=media\&token=ad47b5a6-cb60-4329-89cd-7c5cc4f01d83)

{% hint style="warning" %}
LODs are dependent on their position relative to a user-defined [camera](/manual/filters#camera-filter). Please make sure that this camera is properly set up.
{% endhint %}

## Object groups

It's possible to create *object groups* in order to keep closely related objects together.

Object groups become particularly powerful when used for [zoning](/manual/distribution#zones), as they make it possible to create zones that contain mixed bags of objects, as well as empty zones.

To create a new object group, click the ![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXK0YXrcDUpbe_Du_o%2Fuploads%2FYnhVRULkTdFTPJeDTslm%2Ffolder-plus.svg?alt=media\&token=4a5e1f15-a1ed-45d0-8ca8-ccd8c83c35c6) icon. You can then drag existing objects into that new group. To move an object out of a group, drag it to the drop zone at the top of the interface.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXK0YXrcDUpbe_Du_o%2Fuploads%2F7Dbic54nZ5m7nhPkQ3pp%2Fgroup1.gif?alt=media\&token=c8e1e956-8ccc-45e7-b6f6-be248e9dbfa9)

### Probability

Object groups have their own probability. When [zones](/manual/distribution#zones) are enabled, the probability of object groups (as well as the probability of *standalone objects* that are not part of a group) controls the number of zones associated with that group (respectively, with that standalone object).

The probability of objects inside an object group controls the number of instances of that specific object in that group.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXK0YXrcDUpbe_Du_o%2Fuploads%2FqDrLNzhPiWvAcRk2RqwT%2Fgroup3.gif?alt=media\&token=29f2aaef-4cd2-4269-9241-1709a283417d)

{% hint style="info" %}
When zones are disabled, the probability of a group is still taken into account. This can be useful to fine-tune the chance of each object appearing in your composition.

For instance, you can organize all your flower objects in a *Flowers* group and then set each flower's probability independently from the other object types.
{% endhint %}


# Distribution

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

![Random - Uniform - Grid](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkDFByhQl730maWngp3%2F-MkDGcgf9qYU7iptYB4v%2Fdistribution.jpg?alt=media\&token=8a886b32-0c35-471a-a538-69c64803757c)

## 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.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkCwxj9nKwqD71cWjPY%2F-MkCzbK9bIvMAdtJVZD-%2Fgrid.gif?alt=media\&token=5c7f18c9-25cc-4822-a146-c1bfbaf5f777)

| 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#surface-hosts), both are used. For [curve hosts](/manual/hosts#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#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.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkCwxj9nKwqD71cWjPY%2F-MkD-Sk_2_7kDt9IRXy9%2Frandom.gif?alt=media\&token=fa114332-5401-44af-931e-fa6029014591)

| 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#surface-hosts). For [curve hosts](/manual/hosts#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#random),  instances are more evenly spaced, which produces more natural-looking results in some situations (like a grass field).

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkCwxj9nKwqD71cWjPY%2F-MkD-YhnGPDAZaKXFU3c%2Funiform.gif?alt=media\&token=64318506-a9fe-454a-8431-04e4b570db03)

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

## Vertices

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

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkCwxj9nKwqD71cWjPY%2F-MkD0DK1BhNiycr_Lv48%2Fvertices.gif?alt=media\&token=3337e21a-1769-4c41-9da8-4cd407ddce34)

| 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#surface-hosts). For [curve hosts](/manual/hosts#curve-hosts), it scatters instances at the center of each edge.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkCwxj9nKwqD71cWjPY%2F-MkD0O7Va8lEMWlzZ4xT%2Fface_centers.gif?alt=media\&token=9030eaac-3b1a-4067-a9dc-8451805899b9)

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

## Projection modes

[Grid](/manual/distribution#grid), [Random](/manual/distribution#random), and [Uniform](/manual/distribution#uniform) distributions have a `Mode` parameter that controls [how scattered instances are projected onto surfaces](/manual/things-to-know#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.](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkCwxj9nKwqD71cWjPY%2F-MkDA8xrEbnGfKGfv3uK%2Fworld_space%200.png?alt=media\&token=2be9bcdd-e267-48c7-beed-46274e94f4e5)

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.](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkCwxj9nKwqD71cWjPY%2F-MkD92oB-6VGZiLqJjfC%2Fobject_space%200.png?alt=media\&token=f547de67-12b6-4594-8c40-8832a5bafb02)

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](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkCwxj9nKwqD71cWjPY%2F-MkD9jVLUyH1Os-zE6ZZ%2Fface_space%200.png?alt=media\&token=7cde65e7-514c-43e7-bd9d-79d666b97378)

{% 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.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkDFByhQl730maWngp3%2F-MkDJrH13fzP91jmu2fN%2Fzones.jpg?alt=media\&token=33ffc745-2a67-435d-9a8f-e42f4bc7319e)

| 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#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.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXK0YXrcDUpbe_Du_o%2Fuploads%2Fkz0NUsYsNy13hrARJISn%2Fgroup4.gif?alt=media\&token=35467f18-7f28-4387-9e04-8386ab596434)


# Masks

*Masks* are entities that control where instances can and cannot be scattered. They can either be [Paint masks](/manual/masks#paint-masks), [Area masks](/manual/masks#area-masks), [Path masks](/manual/masks#path-masks), [Image masks](/manual/masks#image-masks), or [Composition masks](/manual/masks#composition-masks).

A mask can be **inclusive**, which means that instances can only be scattered in its area, or **exclusive**, which means that instances cannot be scattered in its area.\
To switch between those two modes, click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGzIt5oSUary5Y-nEI%2F-MkH-HCEyEfYXF8CVRcW%2Fmask_inclusive.png?alt=media&amp;token=da080d17-0d47-4643-87ca-80be77666985" alt="" data-size="original"> and <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGzIt5oSUary5Y-nEI%2F-MkH-LHJAlTWg739TfCE%2Fmask_exclusive.png?alt=media&amp;token=9e418445-c9e3-4e09-b6f8-0b2b20474c78" alt="" data-size="original"> icons.

![Inclusive / Exclusive](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGzIt5oSUary5Y-nEI%2F-MkHRM_PWmBRDKFKu6_o%2Fmasks_toggle.gif?alt=media\&token=96c6141c-3ad0-427f-bf68-492eefb6c9f3)

{% hint style="info" %}
If a composition contains both types of masks, **inclusive masks are applied first** and then exclusive masks are applied over the remaining instances.

Masks are automatically reordered when toggling their inclusive/exclusive mode in order to reflect this rule.
{% endhint %}

## Paint masks

A *Paint mask* allows you to manually draw the shape of the mask. You draw the shape with a brush, just like you would in Photoshop or similar image editors.

To draw the mask, click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkHz2WazrDmIyTrJ8ZG%2F-MkI-BDYXcQUvoz3Ns0V%2Fadd_paint_mask.png?alt=media&amp;token=8058d509-97d0-4255-b680-99fc0b712b67" alt="" data-size="original"> icon, then click & drag over your hosts. You can later click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkHz2WazrDmIyTrJ8ZG%2F-MkI-Te0QE5mZKkNNJTW%2Fpaint_mask_paint.png?alt=media&amp;token=df45272f-8d89-4f74-a535-026c2b959bf8" alt="" data-size="original"> icon at any point to continue drawing the mask.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGzIt5oSUary5Y-nEI%2F-MkHSgujuiJcul8U1uxH%2Fpaint_mask_paint.gif?alt=media\&token=651bf606-59ff-4efb-9e53-eb8f03dd06e8)

To erase the mask, click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkHz2WazrDmIyTrJ8ZG%2F-MkI-av8f0gl-V4cQ9Rs%2Fpaint_mask_erase.png?alt=media&amp;token=30ad9e22-fed7-4c40-9abf-21457f1c7592" alt="" data-size="original"> icon, then click & drag over the existing shape.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkGzIt5oSUary5Y-nEI%2F-MkHT8xGS5I97WztHG3-%2Fpaint_mask_erase.gif?alt=media\&token=124ecab4-b761-4572-aa26-907da470f0a8)

{% hint style="info" %}
Erasing an *inclusive* Paint mask is not the same thing as drawing an *exclusive* Paint mask!
{% endhint %}

| Key   | Description                                                                 |
| ----- | --------------------------------------------------------------------------- |
| ALT   | Change the drawing mode when pressed (toggle paint/erase)                   |
| SHIFT | Draw a straight line                                                        |
| CTRL  | Maintain pressed and move the cursor laterally to change the brush's radius |

## Area masks

An *Area mask* is a group or a component instance that defines a space under which instances will not be scattered.

To add a new Area mask, click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkHz2WazrDmIyTrJ8ZG%2F-MkI1Qy8y_hzp6Wj_4Uz%2Fadd_area_mask.png?alt=media&amp;token=fdd5837c-07f6-4586-a3d1-2cb653d722e8" alt="" data-size="original"> icon and pick a group or component in the model.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkHz2WazrDmIyTrJ8ZG%2F-MkI1V-xsSbKuu4kn1HW%2Fpick_area_mask.gif?alt=media\&token=f18e1451-5787-4404-8edf-1524e232d1ec)

| Parameter       | Description                                                                                                                                                                                                                                                                                                                                     |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Mode            | <p>Part of the geometry used for masking.</p><p></p><p>In <code>Faces</code> mode, instances directly below the entity faces will be masked. This is useful to preserve holes in the mask.</p><p>In <code>Contours</code> mode, the whole silhouette of the picked entity is used. Only edges are considered, faces do not have any effect.</p> |
| Projection axis | <p>The direction in which instances are masked.</p><p></p><p>If unchanged, the default behavior is to use the same projection axis as the composition.</p>                                                                                                                                                                                      |

![Left: Faces mode. Right: Contours mode.](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkHz2WazrDmIyTrJ8ZG%2F-MkI4tofmVnEVOZrLSyQ%2Ffaces_contours.png?alt=media\&token=38517be8-064a-4bd0-90f6-641b353c1455)

## Path masks

A *Path mask* uses a curve with a configurable thickness under which instances will not be scattered.

![Path masks are particularly convenient to simulate dirt paths and tire tracks.](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MgoMDTLxPQmsK9t71q5%2F-MgoOBJDcwH4Z3FZDaka%2Fpath_mask.jpg?alt=media\&token=4a3145c6-86a4-48e8-974b-947e76101956)

To add a new Path mask, click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkI5NyBO0kKc39XljWG%2F-MkI7OKVk2SI8tSoKe9t%2Fadd_path_mask.png?alt=media&amp;token=ccf990bb-1d87-440d-b9e8-782664a32d0d" alt="" data-size="original"> icon and pick a group/component containing curves.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkI5NyBO0kKc39XljWG%2F-MkI6W-u-nxwtN2llAuP%2Fpick_path_mask.gif?alt=media\&token=7d3946fe-171c-4836-883d-0461f50508c0)

| Parameter       | Description                                                                                  |
| --------------- | -------------------------------------------------------------------------------------------- |
| Thickness       | Lateral distance under which instances are masked                                            |
| Projection axis | The direction in which instances are masked, like for [area masks](/manual/masks#area-masks) |

## Image masks

An *Image mask* uses an external image file to control where instances can be scattered. This is useful to reproduce complex patterns.

To add a new Image mask, click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkIM3Rj79x_As4ieQkT%2F-MkIMVSTiBllLNweeSbQ%2Fadd_image_mask.png?alt=media&amp;token=d8ae364e-3fd1-442b-b6b0-6405b32f6f2b" alt="" data-size="original"> icon and select an image file on your disk.&#x20;

![The black and white Skatter logo is used as an image mask to scatter vegetation.](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MgoMDTLxPQmsK9t71q5%2F-MgoOGP1fS0RQ-E753Y4%2Fimage_mask.jpg?alt=media\&token=edd747bc-1ee3-4326-8c86-6b323d4d2691)

{% hint style="warning" %}
Image masks rely on the surface hosts having valid [texture coordinates](/manual/hosts#texture-coordinates). Please make sure that your surface hosts are properly set up.
{% endhint %}

| Parameter           | Description                                                                                                                                                                                                                                                                                                        |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| File                | Image file to use as a mask.                                                                                                                                                                                                                                                                                       |
| Offset              | <p>Moves the image along the X and Y axis.</p><p></p><p>Texture coordinates are traditionally defined in the <code>\[0, 1]</code> range, so an offset of <code>0.5</code> usually moves the image by half its size (this convention might not be followed depending on the origin of the texture coordinates).</p> |
| Scale               | Size of the projected image. Tweak this value to create zoom or tiling effects.                                                                                                                                                                                                                                    |
| Rotation            | Orientation of the image, in degrees.                                                                                                                                                                                                                                                                              |
| Display the texture | Shows the image in the viewport (only for SketchUp 2020+).                                                                                                                                                                                                                                                         |

{% hint style="warning" %}
SketchUp only allows extensions to draw textures in the viewport since SketchUp 2020 so the preview will not be available for older versions.
{% endhint %}

### Darkness values

The whiter a pixel of the image is, the more likely it is for an instance to be scattered there.

A 100% white pixel means that instances can be scattered there. A 100% black pixel means that instances cannot be scattered there. Values in between are interpolated linearly.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkI5NyBO0kKc39XljWG%2F-MkIBK7zNB1RfC6Fy9ec%2Fimage_mask_b%26w.png?alt=media\&token=23c48ba8-fc29-4ab5-98ed-55c0a582fd6c)

{% hint style="info" %}
Image masks only consider grayscale values, as shown in the SketchUp preview. Skatter accepts colored images and converts them to grayscale.
{% endhint %}

## Composition masks

A *Composition mask* uses the instances from another composition to filter where instances can and cannot be scattered.

For instance, a composition *Trees* might be used as the composition mask for a composition *Fallen leaves*, so that they only appear around the trees.

![Fallen leaves are part of a composition that uses another composition's trees as a mask so that leaves only appear around trees.](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MgoMDTLxPQmsK9t71q5%2F-MgoQdrYpKPgi4ye98xQ%2Fcomposition_mask.jpg?alt=media\&token=73efb1e0-680f-4205-93a1-263642b4caa9)

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkI5NyBO0kKc39XljWG%2F-MkIDq-upvE39lFko476%2Fcomposition_mask.gif?alt=media\&token=2e4f6111-7e0c-479d-b94b-c31c6f2efde1)

| Parameter   | Description                                                    |
| ----------- | -------------------------------------------------------------- |
| Composition | The other composition to use as a mask                         |
| Radius      | Distance to mask around each instance of the other composition |

{% hint style="warning" %}
It is possible to chain multiple compositions as masks of each other ("*composition A masks composition B which itself masks composition C...*").

However, Skatter does not allow to create cycles where all compositions depend on each other ("**A** → B → C → **A**") as it would be impossible to compute.
{% endhint %}


# Filters

*Filters* allow you to discard some instances based on a set of parameters. There are [Altitude filter](/manual/filters#altitude-filter), [Slope filter](/manual/filters#slope-filter), [Collision filter](/manual/filters#collision-filter), [Boundary filter](/manual/filters#boundary-filter), and [Camera filter](/manual/filters#camera-filter).

## Boundaries filter

The *Boundaries filter* controls the density and the scale of scattered instances depending on their distance to the boundaries of surfaces and masks.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkMHgyxedthpu72dxaX%2F-MkMuqPR92019vNjBkMR%2Fboundaries%200.png?alt=media\&token=3ff557d9-894d-4834-98cf-54ff8442e469)

| Parameter      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Offset         | Distance to the boundary under which all instances are discarded.                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Falloff        | Length of the falloff that interpolates scale and density near the boundaries. Learn how to use the falloff curve in the [Falloff Curves section](/manual/filters#falloff-curves).                                                                                                                                                                                                                                                                                                 |
| Boundary check | <p>How Skatter determines if an instance is inside of the boundaries or not.</p><p></p><p>With <code>Object origin</code>, only the axes of the instance need to be inside the boundaries. Some instances will probably overlap with the boundaries.</p><p></p><p>With <code>Object radius</code>, the whole shape of the object is considered to determine if the instance lies inside the boundaries. It guarantees that the instances will not overlap with the boundaries.</p> |

## Altitude filter

The *Altitude filter* controls the density and the scale of scattered instances depending on their absolute vertical positions in the model. For instance, this can be useful to control scattering over mountainous landscapes or to finely tune positioning over green walls.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkMHgyxedthpu72dxaX%2F-MkMI0CBhiQ1ABlynG2R%2Faltitude.png?alt=media\&token=9d6b7386-1286-4111-80c1-c25d7ddec397)

| Parameter      | Description                                                               |
| -------------- | ------------------------------------------------------------------------- |
| Top            | Height beyond which all instances are discarded                           |
| Top falloff    | Length of the falloff that interpolates scale and density near the top    |
| Bottom         | Height below which all instances are discarded                            |
| Bottom falloff | Length of the falloff that interpolates scale and density near the bottom |

If `Top falloff` or `Bottom falloff` have positive values, an advanced curve editor appears to customize the evolution of density and scale. Learn how to use that curve editor in the [Falloff Curves section](/manual/filters#falloff-curves).

## Slope filter

The *Slope filter* controls the density and the scale of scattered instances depending on the angle of the surfaces on which they are placed. For example, it can be used to prevent trees from being scattered on a cliff.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MgoMDTLxPQmsK9t71q5%2F-MgoOm_XZbMDp5r5sKOh%2Faltitude_slope.jpg?alt=media\&token=4bbfcbc7-c736-44d7-831c-0b2d67bfb5d8)

| Parameter   | Description                                                                  |
| ----------- | ---------------------------------------------------------------------------- |
| Max         | Angle beyond which all instances are discarded.                              |
| Max falloff | Angle of the falloff that interpolates scale and density near the max angle. |
| Min         | Angle below which all instances are discarded.                               |
| Min falloff | Angle of the falloff that interpolates scale and density near the min angle. |

If `Max falloff` or `Min falloff` have positive values, an advanced curve editor appears to customize the evolution of density and scale. Learn how to use that curve editor in the [Falloff Curves section](/manual/filters#falloff-curves).

## Collision filter

The *Collision filter* discards scattered instances that overlap with each other, to prevent unrealistic interpenetrations between objects.

| Parameter | Description                                                         |
| --------- | ------------------------------------------------------------------- |
| Radius    | Percentage of the actual object's size used for checking collisions |

{% hint style="info" %}
Contrary to the `Scale multiplier` parameter of [objects](/manual/scattered-objects), the `Radius` parameter has no effect on the final size of the instances. It only changes the size used internally by Skatter when checking collisions.

This is useful in cases when instances should be spaced generously (`> 100%`) or to allow a certain degree of interpenetration (`< 100%`).
{% endhint %}

## Falloff curves

All falloffs in Skatter are controlled by a falloff curve. By default, falloffs are interpolated linearly, but you can draw your own curve to create sophisticated effects.

Move your cursor over the curve preview, and click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkMHgyxedthpu72dxaX%2F-MkN4auZy8XPjqHWO3Yd%2Ffalloff_curve_edit.png?alt=media&amp;token=a6a434c3-6d0c-40d7-934f-b2a2b1248fc6" alt="" data-size="original"> icon to edit the curve.\
You can also click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkMHgyxedthpu72dxaX%2F-MkN4dhh9XaO3oZmRlAQ%2Ffalloff_curve_reset.png?alt=media&amp;token=5be04cc7-341e-4bef-a9af-31bbabcaa79f" alt="" data-size="original"> icon to reset the curve to its default linear state, and the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkMHgyxedthpu72dxaX%2F-MkN4gc9tav_PsYiHHJ8%2Ffalloff_curve_invert.png?alt=media&amp;token=ff698998-d657-4f8b-ae50-87d6c20b5d2b" alt="" data-size="original"> icon to invert the curve.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkMHgyxedthpu72dxaX%2F-MkN1PDXzlZn_AGDAEiV%2Fcustom_falloffs.gif?alt=media\&token=d8f48629-1a2e-453a-8ce2-031a3bfa6fac)


# Transformations

*Transformations* apply individual changes to each scattered instance, so that compositions look more realistic, as nothing is perfectly aligned in nature.

## Random scale

**Random scale** randomly scales items in the specified range from `Min` to `Max`. Values are percentages.<br>

By default, the **aspect Ratio** is locked so that items are scaled uniformly on the three axes. But you can click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkM06tlmQh9bebMFao9%2F-MkM48Ed85aGxCdENcyP%2Frandom_scale_lock.png?alt=media&amp;token=eb9bf18a-ad24-4a26-931b-f0d13d7f0d97" alt="" data-size="original"> icon to unlock the ratio to get different scaling on each axis.

## Random translation

**Random translation** translates scattered items away from their original insertion points. The distance is randomly defined within the specified range, from `Min` to `Max`.

## Random rotation

**Random rotation** lets you randomly rotate scattered items in the specified range from `Min` to `Max` along each axis. The rotation is counter-clockwise and the values are in degrees.

## 90/180/270° rotation

**90/180/270° Rotation** randomly rotates items either 0°, 90°, 180° or 270°. This is very useful for randomizing tiles.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkM06tlmQh9bebMFao9%2F-MkM1nKameODMDenE43B%2F90-180-270.png?alt=media\&token=9bdecfda-7d10-45d7-95f2-93de7eff9a62)

## Horizontal and vertical mirroring

**Horizontal Mirroring** will randomly flip items along the X or Y axes, or both.

**Vertical Mirroring** will randomly flip items along the Z axis.

## Look at

Make all your instances point to a target position. It's also possible to aim at the sun's position as defined by SketchUp, which can come in very handy for plants.

![In this crowd, each character is an instance. They are configured to look towards the speaker on the stage.](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MgoMDTLxPQmsK9t71q5%2F-MgoQz1_yoVlTqylKlCo%2Flook_at.jpg?alt=media\&token=6b6bf8fb-7df4-4902-984e-ec05b1dfb1d4)

Enable *Look-at*, then click on the *Pick Point* button and click on a position in the SketchUp viewport.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkM06tlmQh9bebMFao9%2F-MkM7JngaxASRdg_Z7rF%2Flook_at.gif?alt=media\&token=82908dff-2025-4900-8343-0affd449955e)

| Parameter       | Description                                                                                                                                                                                                                                                                                                                                    |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Target          | <p>Target that all the instances will be directed towards.</p><p></p><p>In <code>Point</code> mode, instances looks at a user-defined point.</p><p>In <code>Sun</code> mode, instances looks in the direction of <a href="https://help.sketchup.com/en/sketchup/casting-real-world-shadows">SketchUp's sun</a> (useful for flower fields).</p> |
| Look axis       | Local axis of the scattered instances that points to the target                                                                                                                                                                                                                                                                                |
| Keep horizontal | Instances will only rotate laterally, not up and down.                                                                                                                                                                                                                                                                                         |

## Pointing

The `Pointing` slider defines in which direction the Z axis of the scattered item is pointing. You can set the slider anywhere you want between pointing *Up* (actually, the projection axis) and pointing along the *Normal*.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkM06tlmQh9bebMFao9%2F-MkMHSPkUajulRRUJWUQ%2Fpointing_direction.gif?alt=media\&token=eeb826a6-07f4-4e83-bec3-1458b8258a62)


# Materials

Randomly assign different materials to the instances to introduce variations.

It works the same way as applying a material to a component or a group in SketchUp: only the blank faces in the components will receive the material. If faces already have a material, their material cannot be replaced.

{% hint style="info" %}
When using "[Render-only](/manual/generating#render-only-generation)", this feature is supported by V-Ray and Thea, but not Enscape at this time.
{% endhint %}

![Random materials (Right) introduce more diversity compared to having a single material (Left).](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MgoMDTLxPQmsK9t71q5%2F-MgoQVXky7Ob4rtTYfnq%2Frandom_materials.jpg?alt=media\&token=71d14bc0-368e-403c-aa24-ffa0c54bb0c4)

Click on the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkIMik7em_SDdqk90L1%2F-MkINxYIpxGArDe6TPpj%2Fpick_materials_list.png?alt=media&amp;token=9f9759a5-1042-4423-b0ad-b1c55705fdef" alt="" data-size="original"> icon to select materials in a list, or click the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkIMik7em_SDdqk90L1%2F-MkIO023Rx-9MnGkPHAv%2Fpick_materials.png?alt=media&amp;token=8b9b0eb5-0e63-4ca3-823a-90c310f36be7" alt="" data-size="original"> icon to pick the materials directly in the viewport.

| Parameter          | Description                                                                                                                                                                                                                      |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Probability        | Relative probability of the object to be assigned                                                                                                                                                                                |
| Compatible objects | <p><a href="/manual/scattered-objects">Objects</a> that can be assigned this material.</p><p></p><p>By default, all the objects can be assigned all the materials but it can be useful to be more restrictive in some cases.</p> |


# Camera

The Camera section has two distinct uses:

* Filter instances not visible by the camera or far away from it, using [Exclude non-visible](/manual/camera#exclude-non-visible) and [Distance clipping](/manual/camera#distance-clipping).
* The selected camera position is also used by [LODs](/manual/scattered-objects#lods) to determine when to switch from one LOD to the next.

### Scene camera

The current view is used by default. But since its position changes every time you move in the SketchUp viewport, you probably want to select a [scene](https://help.sketchup.com/en/sketchup/creating-scenes) whose *Camera Location* will be used.

### Exclude non-visible

Discards instances that are not in the camera's field of view. This is particularly useful to boost performance by preventing the generation of instances that will not be visible by the render camera anyway.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkLq3_aywSFBVRUq9aA%2F-MkLxb3Fh_mItHkA9_1I%2Fcamera_clipping%200.png?alt=media\&token=6db67c72-4199-45e4-b970-9a031e5195ab)

| Parameter     | Description                                                                                                                                                                                                                                                                                         |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Expand FOV    | <p>This expands the field of view of the camera when determining if an instance is visible or not.</p><p></p><p>This is useful when we have large objects whose parts could be visible by the camera even though their origin is not. <em>Note that the actual camera FOV is not affected.</em></p> |
| Camera offset | <p>Moves the camera backward or forward when determining if an instance is visible or not.</p><p></p><p>The use-case is the same as above, but for objects that are originally behind the camera. <em>Note that the actual camera position is not affected.</em></p>                                |

### Distance clipping

Discards instances that are far away from the camera. This is particularly useful to boost performance by preventing the generation of instances that are too far away from the render camera to be visible.

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkLq3_aywSFBVRUq9aA%2F-MkLxfvq5sOfE6rD6-ni%2Fcamera_distance%200.png?alt=media\&token=b0356a2f-994e-4f38-8a9e-62305e1323b7)

| Parameter        | Description                                                              |
| ---------------- | ------------------------------------------------------------------------ |
| Distance         | Distance from the camera beyond which instances are discarded            |
| Falloff distance | Length of the falloff that interpolates density near the above distance. |
| Falloff curve    | See the [Falloff Curves section](/manual/filters#falloff-curves).        |


# Composition Manager

The Compositions Manager allows you to manage the compositions in the current model, both [Render Only](/manual/generating#render-only-generation) and [In Model](/manual/generating#in-model-generation).

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXK0YXrcDUpbe_Du_o%2Fuploads%2F7Pcr5D4CtyFEa5I6wo7X%2Fcompomanager.png?alt=media\&token=6a9beb77-3932-4146-ab96-fb72b043f8e1)

### Visibility

You can toggle the visibility of existing compositions by clicking on the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkNXRDr4-0pMdVOM-ek%2F-MkNaBpD2oONGA67OzZp%2Ftoggle_render_only.png?alt=media&amp;token=3856c36d-464a-444e-92d6-85e5da225088" alt="" data-size="original"> (Render Only) or <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkNXRDr4-0pMdVOM-ek%2F-MkNaE8sU8U2t5z7GbwO%2Ftoggle_in_model.png?alt=media&amp;token=210743f3-14b5-4287-9f3e-0c8371e21539" alt="" data-size="original"> (In Model) icons.

The visibility can also be controlled by [SketchUp Tags](https://help.sketchup.com/en/sketchup/controlling-visibility-tags) (formerly known as *Layers*). After assigning a composition to a tag using the drop-down menu, toggling the tag will also toggle the composition visibility.

### Re-generate

You can re-generate a composition at any time using the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkNXRDr4-0pMdVOM-ek%2F-MkNaXX5PBC9D9Xb1KVX%2Fregenerate.png?alt=media&amp;token=7b90030f-36bd-4970-9da3-bbcf0d45ff76" alt="" data-size="original"> icon, without opening the Composition Editor. This can be useful when changing the geometry of a host or a mask.

## Exporting compositions

Click on the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkNXRDr4-0pMdVOM-ek%2F-MkNafWm3tigqsTi6KAv%2Fexport_composition.png?alt=media&amp;token=1fea8bee-425f-4230-b1a2-92dc2e391cf7" alt="" data-size="original"> icon to export a composition. It will create a *.skatter* file that you can then import into another project using the Compositions Manager or [3D Bazaar](/manual/3d-bazaar).

The *Export Scattered Objects* and *Export Materials* options let you embed the *Scattered Objects* (as *.skp* files) and *Materials* (as *.skm* files) in the .skatter file. In this way, these entities will also be imported when you import the compositions in another model.

{% hint style="info" %}
*Export Scattered Objects* also exports rendering dependencies like proxies and maps
{% endhint %}

You can optionally select a cover image that will be used as a thumbnail in 3D Bazaar.

## Importing compositions

Click on the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkNXRDr4-0pMdVOM-ek%2F-MkNaq22yAhhyVlfN4QB%2Fimport_composition.png?alt=media&amp;token=8ad42608-a1bf-46f2-af53-5f5f1611c8c8" alt="" data-size="original"> icon to import a composition that has been previously exported as a .skatter file.

{% hint style="info" %}
The Composition Manager is also capable of importing compositions from Skatter 1 stored as .sklib files.
{% endhint %}

You can also browse and import compositions from [3D Bazaar](/manual/3d-bazaar).


# 3D Bazaar (Library)

[3D Bazaar](https://lindale.io/3dbazaar) is an extension bundled with Skatter that allows you to manage and import your local asset library. It also gives gives you access to an extensive marketplace of high-quality render-ready assets.

## Importing Skatter-ready assets from the marketplace

The marketplace contains hundreds of plants, both free and paid, that can be used with Skatter. Many of these assets are already pre-configured to be imported as Skatter compositions.

Click on the <img src="https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkNIeD3j7z2AjhiNH-E%2F-MkNKtDZFrHaNFLNYCkJ%2Flogo24.png?alt=media&amp;token=27787f7d-d3fc-4475-9595-576b74e1d1d9" alt="" data-size="original"> icon in the Skatter toolbar to open 3D Bazaar.

In the marketplace, click on the *Skatter Contents* category to access all the Skatter-ready assets. These are pre-configured to be imported directly as Skatter compositions, so that you don't have anything to configure (unless you want to tweak the distribution).

When importing a Skatter-ready asset from 3D Bazaar, you will need to select the appropriate file type:

![](https://777932824-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJXK0YXrcDUpbe_Du_o%2F-MkNIeD3j7z2AjhiNH-E%2F-MkNKgOquv8NW066_t2d%2F3dbazaar_import.png?alt=media\&token=451ece84-95d4-49dd-b229-02b0b650142e)

{% hint style="info" %}
Any other object can be used in Skatter, but you will have to create the compositions yourself.
{% endhint %}

## Importing Skatter compositions from the local library

Compositions exported via the Compositions Manager (*.skatter* files) are recognized and listed by 3D Bazaar.\
You can import them directly, provided that Skatter is installed and enabled.


# Release notes

## 2.2.1 (2024-04-11)

Features

* Added **support for SketchUp 2024**.

Bug fixes

* Fixed an error that occurred in some rare cases when using boundaries.

## 2.2.0 (2022-11-17)

Features

* **Skatter now supports newer Mac computers with M1/M2 chipsets.**
* **Added an “Ignore boundaries” option to surface hosts and masks** to provide more flexibility when using the Boundaries filter.
* **Added a “Regenerate all” button** to the composition manager.
* **The composition editor now remembers which UI sections have been expanded/collapsed** for each composition.

Changes

* **Disabling the preview now only hides the instances that will be generated.** Other elements like masks and cameras will still be displayed, making it easier to work on a composition while maintaining good performance.

Bug fixes

* **Fixed object-space distributions not aligning the instances’ axes with the host’s**.
* Fixed the object groups being lost when exporting/importing compositions.
* Fixed automatic generation not running when deleting the last remaining object of a composition.

## 2.1.7 (2022-06-28)

Bug fixes

* Fixed Render Only compositions not being rendered in V-Ray for some users.
* Fixed a rare crash occurring on MacOS when Skatter, V-Ray, and Flextools are installed.
* Fixed SketchUp sometimes freezing for a long time when generating compositions in heavy files.

{% hint style="danger" %}
**Known issue:** Skatter does not work in SketchUp 2022 on Mac computers with M1 chips. We're working on M1 support for a future version.
{% endhint %}

## 2.1.6 (2022-05-02)

Features

* **Skatter is now available in Traditional Chinese**. Go to "Preferences > Language" to change the current language.

Bug fixes

* Fixed the Ruby console sometimes showing up with an error message when starting SketchUp.
* Fixed an error that sometimes occurred when generating a composition that references lost SketchUp entities.
* Fixed an error that occurred when picking a replacement for an area mask.
* Fixed scattered VRScenes appearing at the origin when rendering with V-Ray.

## 2.1.5 (2022-02-17)

Bug fixes

* Fixed Render Only compositions not working consistently in V-Ray for some users.
* Mac: fixed an error that prevented Skatter from launching.

## 2.1.4 (2022-02-15)

Features

* Added a **new export type that produces CSV files for OctaneRender’s scatter nodes**.
* Added **offline license activation/deactivation** for users with a restricted internet connection.
* **Skatter is now available in Spanish**. Go to "Preferences > Language" to change the current language.

Changes

* Significantly **optimized the 3D preview of paint masks**. Before this update, paint masks with a lot of strokes could noticeably slow down SketchUp.
* **Reworked the user interface of the Composition Manager**. The “Edit” action has been upgraded to a bigger button. The “Export” and “Duplicate” actions have been moved to a sub-menu.

Bug fixes

* Fixed various crashes occurring on Mac.
* Fixed a crash occurring when picking many surface hosts.
* Fixed crashes sometimes occurring when combining the Collision filter with random transformations.
* Fixed the Offset parameter in the Boundaries filter accepting negative values even though they are not supported.

## 2.1.3 (2021-12-20)

Features

* **The new "Automatic Generation" mode immediately inserts scattered objects into the model whenever the parameters of a composition change**. Click on the new icon next to the "Generate" button to toggle this mode. This is particularly convenient when working with small to medium compositions that can be quickly recalculated.
* **Skatter is now available in Chinese**. Go to "Preferences > Language" to change the current language.

Bug fixes

* Uniform distribution: fixed several errors that occurred when creating a uniform distribution on a surface with an extremely high number of instances.
* Composition masks: fixed an error sometimes occurring when deleting a composition that was used as a mask by another composition.
* Composition masks: optimized composition masks to prevent SketchUp from freezing during several seconds when there is a high number of masking instances.
* Collision filter: fixed an error that sometimes occurred when combining the collision filter with random translations.
* Collision filter: fixed a crash that sometimes occurred when using the collision filter in a composition that generates a high number of small instances.
* Composition editor: fixed number inputs not behaving properly when entering very small or very large values.
* Composition editor: fixed the position of the context menu that appears when right-clicking on a point.
* Composition editor: fixed several bugs producing a "No job with ID" error when updating a composition.
* Composition editor: fixed the warning that appears when previewing too many instances no working properly.
* Preview: fixed compositions sometimes still showing instances in the preview even when the last calculation was manually cancelled by the user.
* Localization: fixed some window titles not being translated.
* Localization: fixed some parts of the SketchUp UI (menus, tooltips) sometimes not switching to the selected language due to a bug.
* 3D Bazaar: fixed an error that occurred when importing a Skatter composition from 3D Bazaar without having a valid Skatter license.

## 2.1.2 (2021-12-03)

> **Known issue:** while this update fixes V-Ray rendering when using vrscenes as scattered objects, it revealed a bug in V-Ray for SketchUp that might produce crashes when proxies get removed from the model (eg. when a composition using proxies is deleted or toggled off, when a proxy object is removed from a composition, etc...).
>
> The V-Ray developers are aware of the issue.

Bug fixes

* V-Ray: fixed vrscenes not rendering when used as objects of Render Only compositions.
* V-Ray: fixed interactive renders not being updated when a composition is deleted.
* V-Ray: fixed compositions sometimes not rendering when pausing and then resuming an interactive render.

## 2.1.1 (2021-12-01)

> This update fixes several bugs reported by users and especially focuses on V-Ray rendering in order to offer a more robust experience.

Bug fixes

* V-Ray: fixed nested objects sometimes not rendering.
* V-Ray: fixed interactive renders being needlessly refreshed when a composition is computed for the preview but not generated.
* V-Ray: improved performance by ignoring compositions that have not changed since the last render.
* Performance: fixed a memory leak due to internal raytracing data not being cleaned up after it becomes irrelevant.
* Export: fixed exported files named with non-latin characters generating errors when importing them later. Skatter compositions exported before this fix will unfortunately remain faulty but new exports will work as expected.

## 2.1.0 (2021-11-29)

> This first major update for Skatter 2 makes zoning even more powerful by introducing **Object Groups**! With this new feature, you will now be able to generate compositions with even more variation by combining different objects into the same zones.
>
> Please check out the updated documentation for [Objects](/manual/scattered-objects#object-groups) and [Distributions](/manual/distribution#zones).
>
> This update also introduces a **new language: French**. If you're interesting in helping us translate Skatter in more languages, please visite the [Translation category](https://forums.lindale.io/c/skatter/translation/25) of our forums.

Features

* It's now possible to **bundle several objects together in the same zones with Object Groups**. Click the new "Create an object group" button in the Scattered Objects section to add new groups. Drag-and-drop objects into those groups to associate them together in the same zones. Each group has its own probability, letting you finely tune the final distribution.
* **The probability for each object to appear is now illustrated in a colored indicator** at the bottom of the Scattered Objects section. This makes it easier to understand the probability distribution at a glance, especially when combining objects and groups.
* **A new "Noise in empty zones" checkbox has been added** to allow or prevent random noise inside of empty zones. This makes it possible to inject randomness in zones populated by objects, next to truly empty zones.
* **Skatter is now available in French**. Go to "Preferences > Language" to change the current language.

Changes

* **The "Empty zones" percentage has been removed**. Instead, empty zones can be created by adding empty Object Groups and setting their probability as desired.

Bug fixes

* Composition editor: fixed numeric parameters sometimes accepting negative values where they should not.
* Composition editor: fixed automatic unit conversion not working for the distribution density.
* Composition manager: fixed the import of .sklib files from Skatter 1 sometimes failing silently.
* Convert entities to composition: fixed an error occurring when the selection contains too many objects.
* Migration from Skatter 1: fixed all the objects being assigned the same color.
* Fixed the "No job with ID" error that sometimes occurred when generating a composition.

## 2.0.5 (2021-11-06)

Bug fixes

* Paint mask: fixed a rare crash occurring when painting over a surface with tiny faces.
* Render Only: fixed an error message showing up on startup if V-Ray is not installed.
* Render Only: fixed V-Ray not rendering instances when it got loaded before Skatter.
* Render Only: fixed V-Ray rendering the proxy of some assets instead of their full geometry.

## 2.0.4 (2021-11-03)

Changes

* **The maximum brush size has been increased to 25 meters**. Please note that large brushes might degrade performance when painting over surfaces with dense geometry.
* **Compositions from incompatible versions of Skatter now appear in gray in the Composition Manager** and they can be upgraded from there.
* **When upgrading Skatter data coming from older versions, the Upgrade popup now allows users to select individual compositions** (previously, all the compositions of the model had to be upgraded without distinction).

Bug fixes

* Scattered objects: fixed objects being assigned the same color when shift-picking several of them.
* Paint masks: fixed an error sometimes occurring when erasing part of a mask.
* Preview: fixed the preview for a composition sometimes disappearing and not reappearing until its editor is closed and opened again.
* Render Only: fixed referenced materials sometimes being deleted when purging the model.
* Render Only: fixed disabled compositions sometimes not rendering in V-Ray when toggled back on.
* Render Only: fixed compositions not appearing if a V-Ray interative render is started before triggering the first generation.
* Render Only: fixed some assets from 3D Bazaar or Chaos Cosmos not appearing in V-Ray renders.
* Import composition: fixed an error occurring when picking the composition to import.
* Convert to composition: fixed an error occuring when converting model entities to a Skatter composition.

## 2.0.3 (2021-10-25)

**Features**

* It is now **possible to minimize the help animation** displayed when using a Skatter tool.
* A new button in the License window opens **your Lindalë account in an external browser so that you can manage your Skatter licenses** (check current activations, release seats).

**Changes**

* **When duplicating a composition, the editor of the new composition automatically pops up**. Before this change, it could be unclear if the duplication succeeded as the only feedback was a new entry in the Composition Manager.

**Bug fixes**

* Curve hosts: fixed a crash sometimes occurring when scattering along vertical edges.
* Object insertion mode: fixed an error occuring when mixing objects with different insertion modes.
* Composition editor: fixed the parameters displayed in the editor sometimes reverting to old values when V-Ray was active.
* Render Only: fixed compositions not updating properly when switching from Render Only to In Model.
* Licensing: fixed some important errors not being shown to users, such as errors due to network restrictions.
* Licensing: fixed an error that could happen when editing a model that already contains Skatter data without first having activated a license.
* MacOS: fixed some crashes that occurred when picking hosts or masks.

## 2.0.2 (2021-10-14)

This updates fixes a few technical issues reported by our users after the initial launch of Skatter 2.

Most notably, this fixes some errors occurring on **MacOS when multiple models are open**, **V-Ray sometimes not rendering instances**, as well as **objects disappearing when purging the SketchUp model**.

**Bug fixes**

* Image masks: fixed an error occurring when combining image masks with Curve or Point hosts.
* Render Only: fixed referenced scattered objects sometimes being deleted when purging the model.
* Render Only: fixed duplicated compositions sometimes not rendering.
* V-Ray: fixed Render Only compositions created after starting an interactive render not showing up.
* V-Ray: fixed the visibility of Render Only compositions not matching their toggled on/off state.
* Composition Manager: fixed SketchUp's undo command ignoring compositions getting toggled on/off.
* Composition Manager: fixed an error that occurred when importing a Skatter v1 composition (.sklib file).
* Layers: fixed an error occurring when deleting a layer that contains a composition without relocating it to another layer.
* MacOS: fixed various errors occurring when editing compositions with multiple SketchUp models open simultaneously.

## 2.0.1 (2021-10-07)

#### Changes

* Skatter cannot be used without restarting SketchUp after it has been updated. This was previously possible but it generated errors in some cases.
* UI on MacOS: the Composition Manager now shows the compositions contained in the active model. Its contents updates when switching models.

#### Bug fixes

* Collision filter: fixed a crash occurring when combining the collision filter with random scaling.
* Automatic updates: fixed the list of pending versions not being correctly ordered.
* Preferences: fixed an error that sometimes occurred when saving or loading preferences.
* Composition export: fixed the optional thumbnail not appearing in 3D Bazaar.
* Migration from Skatter v1: fixed the Composition Manager remaining empty after upgrading old Skatter v1 compositions to v2 on MacOS.
* 3D Bazaar: fixed an error occurring when importing Skatter compositions.

## 2.0.0 (2021-09-30)

#### Bugfixes

* Automatic update: fixed errors occurring when receiving incomplete data from the server.
* Fixed the "another job is already running" error that sometimes occurred when generating a composition.

## 2.0.0-rc2 (2021-09-29)

#### Bugfixes

* Boundaries filter: fix a crash occurring when combining this filter and curve hosts or point hosts.
* Import: fixed errors occurring with older SketchUp versions.
* Licensing: fixed trial & activation buttons not responding on Mac.
* Fixed several issues when migrating composition from Skatter v1.
* Fixed an error occurring when starting Skatter in older SketchUp versions.

## 2.0.0-rc1 (2021-09-28)

#### Features

* **It is now possible to activate a 15-day trial** to try out Skatter 2.
* A **new slider appears to control the size of the brush** when using the "Erase points" and "Paint mask" tools.

#### Changes

* **Instances are now aligned with curve hosts by default**.
* **When converting existing SketchUp objects to a composition, each selected object now becomes a Skatter instance** (previously, it was the children of each selected object that became Skatter instances).
* **Dependencies (external maps and proxies) are now exported too when exporting a composition** with "Export objects" enabled.
* **Importing compositions from 3D Bazaar is now faster** when Enscape is not installed.

#### Bugfixes

* Migration: fixed migration from v1 setups to v2 compositions.
* Surface hosts: enhanced the quality of the "Cube" texture mode.
* Scattered objects: fixed the "Insertion point" parameter of an object not being applied to its LODs.
* Boundaries filters: fixed the "Boundary check" parameter of the filter not being applied to object LODs.
* Image masks: fixed wrong preview for images with transparency (a checkerboard pattern can now be seen behind transparent pixels).
* Area/Path masks: fixed an error occurring when picking a new mask and hovering an entity with dense geometry.
* Grid distribution: fixed instances sometimes not appearing on the edges of surface hosts.
* Camera filter: fixed wrong results when combining "Exclude non-visible" and "Distance clipping".
* Camera filter: fixed a preview bug occurring when the current view is perfectly aligned with the selected camera.
* Context menu: fixed the "Edit" and "Duplicate" options not appearing when several compositions are selected.
* Context menu: fixed the newly created composition not appearing immediately in the model when "Converting to composition".
* V-Ray: fixed V-Ray rendering only one composition when other compositions use the same scattered object.

## 2.0.0-beta12 (2021-09-14)

#### Changes

* **The preview of composition masks now looks smoother**, especially for large radius values.
* **The "Create compositions as render-only by default" option has been removed.** Skatter now remembers the last mode selected by the user and automatically picks it again when creating a new composition.
* **Skatter now shows a warning notification when the number of previewed instances exceeds the composition's threshold**, as defined in its options, to make it clear that the preview will be incomplete.

#### Bugfixes

* Scattered objects: fixed some object's bounding boxes not appearing in the preview when several objects share the exact same color.
* Scattered objects: fixed the color picker sometimes not responding appropriately.
* Masking: fixed a bug that sometimes produced wrong results when using both inclusive and exclusive masks.
* Masking: fixed a crash sometimes occurring when combining multiple masks.
* Image masks: fixed the image preview over surface hosts not staying active when editing the composition.
* Image masks: fixed an error occurring in SketchUp versions older than 2020 when rendering the preview of an image mask.
* Camera filter: fixed the selected camera not being reset when the associated scene gets deleted in SketchUp.
* Generation: fixed the SketchUp group that contains the instances not being moved back to its correct position (only needed when the group has been moved manually by the user).
* Composition editor: fixed the statistics footer always showing "0 objects".
* Composition editor: fixed an error occurring in SketchUp versions older than 2021.1 when activating a Skatter tool.
* Composition manager: fixed compositions created in a past session sometimes getting deleted by error when editing them in another session.
* Composition manager: fixed generated instances not being copied when duplicating a composition.
* User interface: fixed some Skatter windows (Preferences, Licensing, Composition manager) not opening in older SketchUp versions.
* Installation: fixed an error sometimes occurring in SketchUp versions older than 2021 when starting Skatter after installing/updating it.

## 2.0.0-beta11 (2021-09-10)

#### Features

* **Added the names of our crowdfunding contributors in the "About" section** of the Preferences window. This shows people who contributed non-anonymously on Indiegogo. If your name is missing, please send a message to <skatter@lindale.io>. Thanks again for your help!
* **Added an option to automatically select Render-Only mode for new compositions** in the Preferences window. This is disabled by default.
* **Added an option to enable/disable the automatic generation of Render-Only compositions when opening a model** in the Preferences window. This is enabled by default.

#### Changes

* **Improved performance for multi-core processors.** When possible, Skatter now uses a higher number of cores to generate compositions faster.
* It's now **possible to temporarily disable in-model compositions** by clicking on their leftmost icon in the composition manager (it was previously only possible for Render-Only compositions).
* **Skatter now remembers the paint brush size used for each composition**, which makes it more convenient to work on compositions with different scales.

#### Bugfixes

* Scattered objects: fixed a preview bug that still showed an old object's bounding box after replacing it with another object.
* Paint masks: fixed visual artifacts appearing on the brush when it has a large radius.
* Paint masks: fixed masks drawn in another session appearing with visual artifacts when opening the model again.
* Paint masks: fixed the preview not updating immediately when the geometry of a surface host changes.
* Paint masks: fixed a bug that prevented from changing the brush size with the Control key when the SketchUp window does not have the focus.
* Image masks: fixed wrong result when combining an image mask with other masks.
* Random holes: fixed instances still being discarded when switching to a distribution mode that does not support random holes.
* Composition editor: fixed the "Generate" button sometimes remaining disabled when opening a composition created in another session.
* Composition editor: fixed a composition becoming a draft when enabling/disabling it or changing its layer.
* Composition editor: fixed the window closing when deleting its generated instances in SketchUp's viewport.
* Layers: fixed several rare bugs.
* Context menu: fix several bugs for the "Convert to composition" action.

## 2.0.0-beta10 (2021-08-27)

#### New features

* **The Composition Editor now shows animated GIFs that illustrate how to use the currently active tool.**

#### Changes

* **The user interface of the Composition Editor has been rearranged**: some features have been moved to the "Filters" group (Altitude, Slope, Collisions, Boundaries) and to the "Transforms" group (Look at, Pointing direction).
* **Inversed the roles of white/black pixels in image masks** to match other software packages: instances appear under white pixels and they are hidden by black pixels.
* **Added a&#x20;*****Reload image*****&#x20;button to update the file associated to an image mask**. This is particularly useful to quickly get feedback while editing the image file with an external editor.
* **Significantly improved the performance of paint masks**, especially when using large brushes.
* **Limited the amount of RAM used by Skatter**. In previous versions, the RAM could be entirely consumed in some cases, which crashed SketchUp. This is now less likely to happen for most configurations.

#### Bugfixes

* Uniform face-space distribution: fixed this distribution mode sometimes not generating any instance when hosts have small faces.
* Surface hosts: fixed the "Input - Front" texture mode actually using the back face's texture.
* Paint masks: fixed strokes with a high radius being ignored.
* Paint masks: fixed the boundary filter not working in exclusive mode.
* Area masks: fixed the preview sometimes showing the mask's triangles instead of only its silhouette.
* Area masks: fixed crashes occurring when mixing area masks and curve hosts or point sets.
* Path masks: fixed crashes occurring when mixing path masks and curve hosts or point sets.
* Image masks: fixed image files not updating when picking them again even though their contents have changed.
* Composition masks: fixed wrong results when using a negative radius.
* Random materials: fixed an error that occurred when mixing random materials and object LODs.
* Composition editor: fixed new compositions not getting deleted when closing them without changes.
* Composition editor: fix an error occurring when using feet as the model's unit.
* Upgrade old compositions from v1: fixed a bug sometimes occurring when upgrading v1 compositions with paint masks.
* Upgrade old compositions from v1: fixed new v2 compositions sometimes wrongly appearing as v1 compositions that still require an upgrade.

## 2.0.0-beta9 (2021-08-12)

#### New features

* **Paint masks can now display their 3D volume** in the viewport. This makes it easier to understand the interaction between hosts and paint strokes.

#### Changes

* **Scattered objects can now use a "Center" insertion point that refer to their true geometric center**. The previous "Center" mode has been renamed to "Bottom center" for clarity.
* Listed **materials are now sorted alphabetically** to find them more easily.
* **Improved the performance and accuracy of paint masks**.

#### Bugfixes

* Paint masks: fixed the preview still showing old paint strokes after *undo* operations.
* Composition Editor: fixed a crash occurring when all the picked materials have invalid parameters (such as a probability of 0).
* Fixed the "Update Skatter" and "Upgrade old compositions" menu entries always being clickable before Skatter is started.

## 2.0.0-beta8 (2021-07-26)

#### New features

* You can now **import .sklib compositions from Skatter 1 via the Compositions Manager** (previously, it was only possible for Skatter 2 compositions).

#### Changes

* **Composition masks now display their footprint** in the SketchUp viewport.
* **Changed the order in which Random Transformations and Zones are applied**. Previously, transformations were applied last, which could produce fuzzy zones even if the Zones "Blur" parameter was set to 0. Now Zones are applied last so it's possible to generate compositions with both random transformations and well defined zones.
* Added an **"Update Skatter" entry in the menu** to apply pending updates (previously, it was only proposed once at startup).
* Added an **"Upgrade old compositions" entry in the menu** to upgrade compositions made with an older version of Skatter (previously, it was only proposed once at startup).

#### Bugfixes

* Curve hosts: fixed some edges being ignored.
* Collisions: fixed wrong results when combined with random transformations.
* Composition Editor: fixed automatic unit conversion ignoring some parameters (paint mask's thickness, composition mask's radius).
* Composition Editor: fixed the material picker sometimes wrongly accepting duplicate materials.
* Composition Editor: fixed the preview not updating immediately when toggling it on/off.
* Composition Editor: fixed the "Generation in progress..." message not disappearing in some cases.
* Composition Manager: fixed new compositions all having the same name, a numeric suffix is now added to tell them apart.
* Composition Manager: fixed the path to the optional cover image not being displayed in the UI.
* Composition Manager: fixed export not working when several Skatter objects/materials reference the same SketchUp entity.
* Fixed an error occurring when loading a model that contains a paint mask.
* Fixed an error occurring when loading a model with render-only compositions without hosts nor objects.
* Fixed an error occurring when copy/pasting a composition.
* Fixed warnings messages appearing in the Ruby console when using a parallel camera.

#### 2.0.0-beta7

This new beta version brings us one step closer to the official release of Skatter 2. From now on, we plan to release future beta versions at a higher rate, to address the remaining bugs and apply a few layers of polish and optimization before the big day.

Note: SketchUp models that contain **Skatter data from previous beta versions will not work properly** due to breaking changes introduced in 2.0.0-beta7. As always, please do not use Beta versions for professional or serious projects :)

#### New features

* **Area and Path masks can optionally define their own projection axis**, which is more convenient to achieve masking over non-horizontal surfaces. If unchanged, the default behavior is to simply use the same projection axis as the composition.
* **Object masks and Area masks have been merged.** Toggle the new "Mode" property to switch between masking under the mask's faces (old Object mask behavior, preserves holes) or under the contours defined by the mask's edges (old Area mask behavior).
* **The Boundaries filter has a new Offset parameter** to completely mask instances between the border and the start of the optional falloff.
* A **new "zoom on SketchUp entity" button** has been added next to hosts, masks, and objects to quickly locate the SketchUp entities that they reference.
* Added **support for V-Ray Cosmos assets**.

#### Changes

* The **preview for projection-based masks now only shows the mask's silhouette** instead of all the internal edges, which looked messy.
* **Unit changes are now correctly handled.** Parameters are automatically converted when the unit of the SketchUp model changes.
* Composition Editor: numeric fields now **automatically convert units** (e.g. you can type "20cm" in a model set in meters, and you will get "0.2")
* Composition Editor: the **"Density" parameter now uses the Area Unit** in SketchUp 2019 and above.
* Composition Editor: **masks are now automatically reordered when toggling between inclusive/exclusive modes** in order to reflect the order in which they are applied (inclusive masks first).
* Composition Editor: **renaming a Skatter entity (host, mask, object...) does not rename the associated SketchUp entity anymore**. In this way, users can manage their Skatter naming as they wish without altering the underlying model. This also makes it possible to give different names to several Skatter objects that reference the same SketchUp component.
* Composition Manager: a dialog now **asks for confirmation before deleting a composition**.

#### Bugfixes

* Composition: fixed changes not being saved when a composition has no instances.
* Composition: fixed render-only compositions not being properly deleted (they appeared again when reloading the model).
* Composition: fixed various errors occurring when loading a model containing Skatter compositions that reference missing SketchUp entities.
* Compositions: fixed errors sometimes occurring when canceling the ongoing generation of a composition.
* Collision: fixed an error that occurred when an object had a "Geometric center" insertion mode and LODs.
* Random material: fixed materials not being applied when generating a composition.
* Transformations: fixed various errors that occurred when an object had a "Geometric center" insertion mode and some combinations of transformations that modified its rotation or scale.
* Random translation: fixed the model's unit being ignored.
* Scaling: fixed instances sometimes appearing away from their hosts when different forms of scaling were enabled (random scaling, altitude scaling, slope scaling...)
* Area mask/Path mask: fixed instances being filtered in both the positive and negative directions rather than only in the direction of the projection axis.
* Path mask: fix wrong results when there are several disjoint paths.
* Selection picking (Shift + pick button): fix picking not working when multiple items are selected.
* Curve editor: fixed curves with vertical segments producing wrong results.
* Performance: fixed the UI freezing when picking entities in large SketchUp models.
* 3D Bazaar: fixed the 3D Bazaar button not working.

## 2.0.0-beta6 (2020-12-17)

#### New Features

* **The new 3D Bazaar extension is now bundled with Skatter.** Its marketplace contains the free legacy assets from Skatter 1 as well as new high-quality content from creators such as Humano and ModelUp, and there's much more to come! 3D Bazaar is also capable of conveniently managing your local model library. When importing assets through the 3D Bazaar, it automatically rewrite the dependency paths (maps, proxies...) so you don't have to do it manually!
* Added support for **SketchUp 2021**.
* Added support for **V-Ray 5**.
* Composition Manager: you can now **export a composition to an external file** and then import it back into another SketchUp model.
* The preview now shows the **footprint of area masks** over hosts.

#### Changes

* Significantly **optimized the scattering engine**.
* The ***Uniform*****&#x20;distribution mode uses a new algorithm** that is faster and scatters instances more evenly.
* Erasing points from *Point hosts* now uses a circular selector similar to paint masks (Use `Ctrl + drag` to tune the selector's radius).
* Composition Editor: **editing parameters does not block the UI** until the preview has been computed anymore, which should be more confortable when working on heavy compositions.
* Composition Editor: new icons show the **color and type of materials** to better distinguish them.
* Composition Editor: renamed *Lock ratio* to *Uniform scale* for clarity.

#### Bugfixes

* Fixed the Ruby console opening when using Skatter.
* Fixed existing compositions not being automatically generated when starting SketchUp.
* Fixed the *Object space* mode not working properly with some projection axes.
* Fixed random materials being lost when loading a model.
* Fixed paint masks being lost when loading a model.
* Fixed area masks not working properly when using nested groups/components.
* Fixed collisions not working properly when random translations are enabled.
* Fixed random scaling not working properly when *Uniform scale* is enabled.
* Fixed a crash that sometimes occurred when using falloffs.
* Fixed an error that occurred when opening the Composition Manager before creating a composition.
* Composition Editor: fixed the LODs *Distance* field having no unit.
* Composition Editor: fixed the *Y* row of random scaling still being editable in *Uniform scale* mode.
* Composition Editor: fixed an error that occurred when trying to rename a composition mask when no composition has been picked yet.
* Composition Editor: fixed the material *Probability* field not working.
* Composition Editor: fixed the window sometimes turning white when switching from one numeric field to another.
* Error window: fixed error details not being displayed in some cases.

## 2.0.0-beta5 (2020-10-20)

#### New features

* **Composition mask**: spawns circular masks around each instance generated by a composition. For instance, if there's a "Tree" composition then another "Dead leaves" composition can use it as an inclusive mask so that leaves only appear at the feet of the trees.
* **Object-space projection**: select this mode to project scattered instances along the local axis of a surface host in order to obtain a consistent result whatever its rotation in space. This is especially useful for non-horizontal hosts.
* **Improved Number Inputs**: you can now easily edit the value of number inputs with a simple click & drag.

  ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0b259535-29ef-47f1-a5b7-80cdea3a3e78/number\_input.gif](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0b259535-29ef-47f1-a5b7-80cdea3a3e78/number_input.gif)
* You can now **rename hosts, objects, materials, and masks** by clicking on their name in the Composition Editor. This will automatically rename any referenced Sketchup entity.

#### Changes

* **Skatter no longer freezes SketchUp when computing compositions**. You are now able to continue using SketchUp while your composition gets generated in the background. During this time, Skatter's interface is grayed out and a "Cancel" button appears to interrupt processing if you wish to.
* It is now possible to **select any of the X/Y/Z axes as projection axis** (only "-Z" and "custom axis" were previously available).
* When a SketchUp entity referenced by a Skatter host, object, material or mask gets deleted in the SketchUp model, you will **now be given the option to pick a replacement entity** (previously the item was automatically deleted).
* Changed the curve editor behavior when adding a handle to a point to better preserve the curve's shape (previously the handle was always placed horizontally which deformed the existing curve).
* Added a specific error message to the licensing window when the number of allowed activations is exceeded.

#### Bugfixes

* Fixed assigned objects shuffling randomly when the number of generated instances changes.
* Fixed Sketchup entities nested into groups or components not being pickable.
* Fixed a crash that sometimes occurred with *Vertices* distribution over dense geometry.
* Fixed the *Pointing* setting producing inconsistent alignments over vertical surfaces.
* Fixed various *Collisions* bugs.
* Composition Editor: fixed errors that occurred when holding Shift to add the current selection as hosts/masks/objects and it contained incompatible SketchUp entities.
* Composition Editor: fixed the *Collision radius* field being empty.
* Composition Editor: fixed the list of scenes not updating immediately when adding a new scene in the SketchUp model.
* \[Mac] Composition Editor: fixed the warning message about non-generated changes showing up too late due to a SketchUp bug.

## 2.0.0-beta4 (2020-09-21)

#### New features

* **LOD**: replace objects with variants as they get farther away from the camera. For instance, inject lower-resolution versions of your objects in order to boost performances in your model.
* **Face-space projection**: select this new mode to wrap instances all around your hosts with *Grid*, *Uniform* or *Random* distributions. This replaces the *Wrap (UV)* mode from Skatter 1, which was only compatible with *Random* distributions.
* It is now possible to **preview other compositions additionally to the one currently being edited**. To do so, open the new dropdown menu next to the eye icon in the Composition Editor.
* The Composition Editor now displays **statistics about the latest generation** (processing time and number of generated instances).
* **Skatter 1 to Skatter 2 conversion**: when opening a file that contains Skatter 1 data, a pop-up window now appears to offer to upgrade the old data to Skatter 2. Warning: The upgraded compositions will not be 100% identical. If you wish to keep the exact same results for a specific composition, please do not upgrade your model and continue using Skatter 1 to edit this particular composition.

#### Changes

* **Breaking change**: due to some changes under the hood, compositions created with previous Beta versions will lose their Hosts/ScatteredObjects/Masks in Beta 4.
* Curve editor: **clicking the "Mirror handles" button activates both handles** if necessary (previously the button was disabled until the handles were manually activated, which required more work).
* Composition Editor: **each new composition is assigned a different random seed** (previously they shared the same starting seed, which generated the same distributions by default).
* Composition Editor: switched the **"Grid rotation" parameter to a slider** (previously was a text input).
* Composition Manager: show **hidden compositions with a lighter color**.
* Licensing: display a specific error message when trying to use an old Skatter 1 license key.

#### Bugfixes

* Image masks: fixed the preview in the SketchUp viewport not aligning with the masked instances.
* Path masks: fixed paths based on closed curves masking all the instances inside of the curve's shape.
* Path masks: fixed masks being lost when closing a model.
* Path masks: fixed crash occurring with some geometric layouts.
* Composition Editor: fixed compositions getting deleted when generating them with parameters that produce no instances.
* Composition Editor: fixed SketchUp freezing for a long time when picking entities that contain a lot of geometry.
* Composition Editor: fixed the "Preview" button not working in a consistent manner.
* Composition Editor: removed the warning that popped up when closing a new composition that had not been modified yet.
* Composition Manager: fixed the number in the default composition name not being reset when creating a new model.

## 2.0.0-beta3 (2020-07-09)

#### New features

* **Image mask**: use external images to filter instances and create complex patterns over surfaces.
* **Path mask**: filter instances along curves with a controllable thickness, perfect for paths and tire tracks.
* **Look At**: make all your instances point to a target position. It's also possible to aim at the sun's position [as defined by SketchUp](https://help.sketchup.com/en/sketchup/casting-real-world-shadows), which can come in very handy for plants.
* **Align instances with the curve direction**: enabling that option on a curve host smoothly rotates instances to follow its trajectory.

#### Changes

* Restored the Skatter 1 behavior for falloffs: **the density or scale of instances depends on the extreme values of the custom falloff curve** (previously, falloff values were ignored for instances not covered by the falloff, which produced discontinuities).
* Added buttons to **quickly invert and reset a falloff curve** without opening the curve editor.
* **Added a "Draft" label** to compositions that have been modified but not generated. A new composition whose dialog is closed without getting generated first will now get deleted (but a warning is shown to avoid losing work).
* **Renamed&#x20;*****Curve masks*****&#x20;to&#x20;*****Area masks*** to avoid ambiguities with the new Path masks that also use curves.
* **Renamed&#x20;*****Clusters*****&#x20;to&#x20;*****Zones*** to better reflect their function.

#### Bugfixes

* Fixed an error that occurred when using `Right-click > Edit composition` after opening a saved SketchUp model.
* Fixed zones not working correctly on non-horizontal surfaces.
* Fixed wrong results when combining the "Origin" insertion point with random scaling.
* Fixed render-only compositions being displayed in render engines when they were disabled or when their layers were hidden.
* Composition Editor: fixed an error that sometimes occurred when picking hosts with specific types of geometry.
* Composition Editor: fixed numeric inputs formatting the value while typing.
* Composition Editor: fixed numeric inputs not allowing more than 3 decimals.
* Composition Editor: fixed an error that occurred when scaling instances to 0% of their initial size.
* Composition Editor: fixed Undo/Redo not updating the preview.

## 2.0.0-beta2 (2020-05-22)

#### New features

* **Custom falloffs**: a new curve editor allows you to finely control density and scale falloffs.

#### Changes

* It is now possible to **assign a layer to an in-model composition** from the Compositions Manager (it was previously only possible for render-only compositions).
* It is now possible to **filter which random materials can be assigned to which objects**.

#### Bugfixes

* Fixed curve masks sometimes not projecting the correct shape.
* Fixed the "Face centers" distribution creating several instances per face.
* Fixed an error occurring when opening a model that contains render-only compositions.
* Fixed non-generated compositions sometimes disappearing when editing the SketchUp model.
* Fixed deleting an object making it impossible to pick other objects later.
* Fixed default density values when using units other than meter.
* Compositions Manager: fixed compositions from previous models being listed.
* Compositions Manager: fixed the layer selection not responding.
* Compositions Manager: fixed the refresh button deleting scattered instances.
* Compositions Manager: fixed unresponsiveness when deleting a composition in some cases.
* Composition Editor: fixed the object's color picker sometimes not responding.
* Composition Editor: the density field now correctly displays "obj/unit²" instead of "obj/unit".
* Composition Editor: fixed numeric inputs behaving unexpectedly when typing decimal separators.

## 2.0.0-beta1 (2020-04-30)

From this point on, we will regularly release updates that introduce new features and fix technical issues.&#x20;

At first, you will probably encounter a few bugs, but with your help and our active support we hope that things will quickly run smoothly for everyone.

{% hint style="danger" %}
**Please do not use the beta versions for professional and/or serious modelling projects.**

At this stage, Skatter 2 is likely to go through major internal changes and we cannot guarantee compatibility from one beta version to another.

Skatter 2 safely installs alongside Skatter 1. So you can continue to use Skatter 1 for your projects, and you'll still be able to test the Skatter 2 beta.
{% endhint %}

#### **What has already been done**

This first beta release introduces quite a few novelties:

* A **brand-new user interface** with a slicker, more modern look and feel.
* A **new scattering engine** that we rebuilt from the ground up in order to boost performances and to support the ambitious features that will be introduced with each upcoming beta version.
* **Clustering** support so that you can create organic groups of objects.
* A new **3D paint tool** to draw masks over your geometry.
* **Random material** assignation in order to introduce more variety (note: for now this only works when generating in the model. Rendering engines do not support random materials yet).
* A new ***Uniform*****&#x20;distribution** type to generate natural-looking, yet random, compositions. The old *Uniform* distribution from v1 has been merged with the *Grid* distribution.
* **Holes** parameters to generate holes in regular distributions like Grid, Vertices, and Face Centers, as well as empty clusters.
* **Undo/Redo** in the Composition Editor.
* **Colored preview**. Each Scattered Object has a unique editable color in the preview, instead of all being red.
* A new **Custom Projection Axis gizmo.**
* A **Compositions Manager** that replaces the old Render List, which allows you to manage all of your compositions: In-Model and Render-Only.
* It is now possible to convert a set of existing components or groups to a Skatter composition, to make use of its powerful features like Render-Only or Random Transformations.
* A **new updater** that installs the latest versions without hassle, directly from within SketchUp.
* A better and more reliable licensing system.
* A new error reporter to help us fix technical issues more quickly.


