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.
Child pages (Children Display) |
---|
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 “ |
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 “ |
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 into9x9 ( 81 )
level tiles, where each tile is100K
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 |
Blockers
Be sure to place ProceduralFoliageBlockingVolumes
in places where foliage should not spawn.
Info |
---|
Be sure to set the |
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.
|
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 |
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.