Ground Clutter

From ARK Modding Wiki
Jump to: navigation, search

Original Source

OVERVIEW

The Ground Clutter system in ARK 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.

GFXTech ComputeShaderProceduralClutter.jpg

SETUP

Prerequisites:

  • Landscape
  • Painted layers with layer info

DEFINE CLUTTER LAYERS

There can be up to 8 unique clutter layers that are associated with an arbitrary number of Landscape layers by the Landscape Info ID system. This means that two or more Landscape layers can share one clutter layer. However, each landscape layer can only be associated with one Landscape Info ID. Here is an example of 5 separate ground clutter layers with the associated landscape layers and assets:

LANDSCAPE INFO ID LANDSCAPE LAYERS BIOMES ASSETS for CLUTTER
1 Shared_Grass_01 Valley ClutterGrass_02, SmallRock01_Clutter, SmallRock04_Clutter, Marigold_Clutter
2 Jungle_Leaves_01 Jungle Foliage01_Clutter, Foliage02_Clutter
3 Beach_Sands_Pebbles_01 Beaches SmallRock01_Clutter, SmallRock04_Clutter, SM_SeaShell00
4 Jungle_Pebbles_01, Shared_Ground_Pebbles_01 Jungle, Mountains (Path) SmallRock01_Clutter, SmallRock04_Clutter(Mountain)
5 Beach_Sand_01, Beach_Sand_02, Beach_Sands_Wet Beaches SM_SeaShell00, SM_SeaShell01, SM_SeaShell02, SM_SeaShell03, SM_SeaShell04, SM_SeaShell05
6 Shared Ground Pebbles 02 SM_RiverRock_01_Clutter, SM_RiverRock_02_Clutter, SM_RiverRock_03_Clutter, SM_RiverRock_04_Clutter, SM_RiverRock_05_Clutter
7 Beach_Sands_Dirt_02 Beach SM_WoodDebrisClutter_01, SM_WoodDebrisClutter_02, SM_WoodDebrisClutter_03, SM_WoodDebrisClutter_04, SM_WoodDebrisClutter_05, SM_WoodDebrisClutter_06
8 TBD Snow TBD

CREATE ACTORS

For each clutter layer, add a Ground Clutter Layer Actor in the map:

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)
  • Add Clutter Layers to the Clutter Layer Array, filling in the properties for Static Mesh, Layer ID, Density, and Min / Max Size
  • Uncheck Allow Shadows to save performance for meshes that do not need them


GroundClutterLayerActorProperties.png

CONFIGURE LAYER INFOS

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

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

GUIDELINES

It is important to construct Ground Clutter meshes with technical and artistic care to maximize performance and quality of the end result.

PERFORMANCE

Ground clutter meshes do not support LODs, so 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.

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

AESTHETICS

Creating good ground clutter meshes is a lot like creating tiling textures where obvious repetitive details should be avoided. Since the system generates and places meshes randomly, using meshes that have a random clumping pattern become very obvious. Such meshes should be combined with additional clutter meshes to break up the patterns.

CONVERTING ASSETS

NON-SPEEDTREE

Non-SpeedTree assets can easily be converted for use in the clutter system using Simplygon in the editor. Steps:

  1. Duplicate the asset and add a _Clutter suffix. So RockGroup01 becomes RockGroup01_Clutter
  2. In the StaticMesh Editor, Remove Collision and existing LODs.
  3. In LOD0, under Reduction Settings, check Visibility Aided and set an appropriate Percent Triangles amount (0-100 scale).
  4. Click Apply Changes


SimplygonClutter.png

SPEEDTREE

SpeedTree assets may be able to be converted using the above method, but if this breaks wind effects, the converted assets should be generated in SpeedTree Modeler and imported as unique clutter meshes. Wind can and should be used, just like normal foliage meshes.