Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Child pages (Children Display)

This document describes how to use the custom Goofish Procedural Tools plugin to decorate foliage across any number of terrains, of any size, including using world composition.

children

Table of Contents

Plugin Installation


To activate the plugin, simply copy the “ProceduralTools” plugin into the [Engine]\Plugins folder.

Once installed the ProceduralTools plugin will be available from the toolbar.

Plugin Usage


This section describes the plugin general use, to create procedural spawners, that will manage Hierarchical Instanced Static Mesh components for the world.

Info

Activate the plugin from the toolbar

Note

Any of the properties below can be changed later after creating the asset in the content browser

  • Create From Selected

    • Select static mesh actors from the Content Browser, and the tool will create a spawner blueprint in the content browser under /Game/Blueprints , with the configured properties

  • New Name Suggestion

    • Suggest a name for the spawner blueprint to be created in the content browser.

  • Align To Surface

    • Set the align to surface property on the created asset.

  • Terrain layer

    • Choose from a standard set of terrain layers, such as Grass, Rock, Snow.

      • NOTE: these can be changed later in the asset

  • Culling Distance, Height

    • Common culling and height offset distances.

  • Tiled

    • This will set the “Tiled” property on the spawner asset.

Custom Procedural Spawner

This section describes the properties, and usage of the spawners.

  • Pitch, Yaw, Scale Max

    • Used to drive the random instance placement. ( in degrees for rotation )

  • Density Scale

    • How dense to pack the instances, this will be relevant to the extent of the tile, or the world, depending on if “Tiled" was specified.

    • 0 Denotes no spawning.

    • 0.1 Denotes relatively sparse spawning.

    • 0.5 Denotes fairly dense spawning. ( use with caution )

    • 1 Denotes extremely dense. ( do not recommend )

  • Tiled

    • If specified, and the world is using world composition, each level tile will get it’s own spawner instance, that will be managed by this spawner.

      • Instances will be placed only within the confines of the tile, density scale refers to this size.

    • If not specified, only the persistent level will get a spawner instance, that will be invisible and managed by this spawner.

      • Instances will be spawned according to the World Offset and Extent properties.

      • Density scale will refer to the World Offset and Extent properties.

  • Seed

    • Used to control re-spawning the same values from the random streams.

  • Cluster

    • Allow instances to cluster as they are placed for more natural looking variance.

  • World Extent & Center

    • If Tiled is not specified, this will be required, to indicate the spawn area.

  • Allowed Component Fuzzy Names

    • If the line trace hits a component, which names is it allowed to spawn on ( match using contains )

  • Custom Procedural Instance Class

    • This will be the blueprint/class that the spawner will manage in the world, these are responsible for physics hits as well as managing and placing hierarchical static mesh instances in the world.

      • This blueprint/class must inherit from “CustomProceduralInstance" c++ class.

Info

These spawner assets may be created by extending the “CustomProceduralSpawner" c++ class, or by using the above tool.

  • Inherits from CustomProceduralSpawner c++ class.

  • Is meant to be placed in the scene, and used as an editor tool to procedurally spawn foliage.

  • Meshes

    • A list of Static Mesh actors, that are going to be spawned in the world.

  • Custom Override Materials

    • Allow each instance material to be overridden, index of material, must match index of the static mesh.

      • Each material override may specify multiple materials per static mesh.

  • Terrain Layers

    • Spawn only on certain layers of the terrain

  • Collision

    • Each instance can support collision

  • Align To Surface

    • The hit normal will be used to align the instance to the surface.

Info

The tool also has debug/trace functionality.

If trace is specified, instances are not spawned, but only spawners created, and made visible in the editor, so that manual usage can commence, by simply selecting the spawner, and choosing “Create Tiled Instances"

Example Usage


This will showcase example usage on a terrain of 800,000 x 800,000 unreal units ( 8K ).

  • The landscape exists entirely in the persistent level, and is not broken up for world composition.

  • The rest of the world ( certain foliage, most static mesh actors ) however is broken up into 9x9 ( 81 ) level tiles, where each tile is 100K unreal units.

  • Static meshes and foliage will be sent to these tiles for performance.

    • Boulder, rocks and bushes will be tiled ( not live in the persistent level )

    • All trees will live in the Persistent level, and will NOT be tiled. ( trees need to be visible from near infinitely far away, as their highest LOD is basically a square billboard )

World Setup

The world consists of 81 levels for static mesh actors, and certain foliage, but the landscape lives in the persistent level in it's entirety.

Info

We want the landscape to always be visible from infinitely far away, so we do not tile the landscape into world composition tiles, only static mesh actors and certain foliage.

Blockers

Be sure to place ProceduralFoliageBlockingVolumes in places where foliage should not spawn.

Info

Be sure to set the ProceduralFoliageBlockingVolumes to overlap with WorldDynamic

Boulders

First large boulders will get scattered across the entire terrain, and tiled into their respective levels. These have their culling distances set.

Info

Design Methodology: Layer spawners for greater effect.

  • Large Boulder first, into world tiles.

  • Small rocks next ( let them scatter on the boulders too ), into world tiles

  • Then ground cover/bushes/plants/flowers ( let them scatter on boulders too ), into world tiles

  • Then trees ( let them scatter on boulders too ) , into the persistent level only.

Scatter Rocks

Scatter rocks across the terrain next, including on top of boulders and/or any other large acrhitectural static meshes, such as terrace meshes.

Ground Cover: Bushes plants & flowers.

Ground cover is up next, these can also be scattered on top of boulders, and large terrace meshes.

Info

These gifs were taken in realtime, the gif was not stopped/started, this tool just populated an 800K terrain in under a few seconds ( into 91 tiles).

Trees

Trees are then scattered into the world, these are not tiled, but scattered across the entire persistent level, as we want them visible from near infinitely far away, due to their performant high LOD billboard.

Play in Editor

This shows the tool in action, along with the tiles, as world composition only loads tiles as required.

Info

Ejecting the possessed player, and moving to a tile that is not loaded, we can see the trees are obviously persistent, but foliage such as ground cover, terrace meshes and large boulders are clearly missing ( because we are in a tile that is not loaded ).

Biomes

The tool supports biomes by optionally restricting foliage to be spawned on specific terrain layers, and/or components.