Ground Clutter

Overview

The Ground Clutter system in Atlas is a proprietary method for placing a large number of small static meshes on Landscape layers with minimum performance overhead. Meshes are placed procedurally in a fixed radius around the player by a compute shader at runtime, using simple rules based on the associated IDs of painted Landscape layers.

Setup

Adding clutter requires the following steps:

  • A landscape is required with terrain layer weights painted.
  • Each layer of a landscape references a LayerInfo asset. This asset will need to have its Landscape Info ID be equal to an integer (int) that is positive and not 0. (0 defaults to no clutter)
  • For each non-zero unique Landscape Info ID used you will need to add a Ground Clutter Layer Actor in persistent. This Ground Clutter Layer Actor will have a setting for Layer ID. This number should match the same number as the Landscape Info ID. This creates a 1:1 relationship between the Ground Clutter Layer Actor and the LayerInfo asset.
  • A post process volume should be added to the farthest sub level of a particular island with it scaled to encompass the landscape. This post process volume will actually have your clutter settings. When you enter the volume it will push the clutter settings to the Ground Clutter Layer Actors and you will see clutter. It is highly recommended that you use a blueprint for the clutter post process volume. This will allow you to share clutter settings for a particular biome across multiple islands. You will also only need to make adjustments to a single blueprint when refining clutter settings instead of making changes to many different islands.
  • Multiple landscape layers can share the same clutter settings by having the Landscape Info ID in the LayerInfo settings be identical.

Ground Clutter Layer Group

The ground clutter layer actors that must be placed in persistent can be found by searching for it in the modes tab. Ground clutter settings are controlled by a post process volume that is placed in the farthest level for a particular island. The ground clutter layer actors in persistent will inherit their settings from this clutter post process volume. It is highly recommended that this post process volume be a blueprint. That way you can have multiple islands that will share the same clutter blueprint for a particular biome. If you need to make changes you will only need to do it once. This will also allow you to make children of the blueprint that are slightly different but inherit most of their settings from the global blueprint.

../_images/GroundClutterLayerActor.png

In the properties:

  • Make sure each actor’s transform is set to the world origin (0,0,0)
  • Add a Static Mesh (this will not be used, but is needed for other reasons - just use your first clutter mesh)
  • Set the Layer ID for the clutter actor. This should match the int used for the LayerInfo asset where you want the clutter to appear.
../_images/2019-01-07_13-24-51.png

LayerInfo Assets

For each Landscape Layer Info, set the corresponding Landscape Info ID to match the desired Ground Clutter Layer Actor’s Layer ID.

../_images/LandscapeInfoID.png

Post Process Blueprint

It’s best to create a global post process clutter blueprint for each particular biome. All islands of that biome can then use that blueprint for clutter.

../_images/2019-01-07_13-51-21.png

Tweaking

Landscape Info ID is cached on load, so you must reload your map after setting layer IDs. You should now see some beautiful clutter all over your painted landscape layers! All properties can now be adjusted for each Ground Clutter Layer Actor in real-time.

Performance

In general they should be one draw call and less than 200 triangles. Exceptions can be made for lower densities where higher triangle counts can be used on a case-by-case basis. All clutter assets should only have two lods. You do not need to adjust the screen size of the 2nd lod as it is handled in code.

DENSITY TRIANGLE LIMIT
1 130
0.9 137
0.8 145
0.7 155
0.6 168
0.5 184
0.4 206
0.3 237
0.2 291
0.1 411
0.05 581
0.025 822
0.01 1300