The standard ForestTools actor is a highly versatile PCG blueprint processed on the CPU. It is your go-to tool for highly controlled, editor-time generation.
Key Features & Capabilities:
Versatile Targets: Scatter assets directly onto Landscapes, along Splines, or across the surfaces of specific Static Meshes.
Include/Exclude Masks: Dynamically include or exclude specific splines or meshes from the scattering area to easily carve out roads, buildings, or clearings.
Advanced Mapping: Customize your biomes using the included 15 Distribution Maps, 6 Cluster Maps, and 10 Color Variation Maps.
Self-Collision: Built-in spatial logic prevents meshes from overlapping unnaturally.
CleanUp PCG - cleans up your currently generated meshes.
Create Stamp - Stamps your generation into a baked ISM actor.
Flush Cache - Flushes the cache of your scatter object.
Generate PCG - Forcefully regenerates your scatterer.
Load Preset - Loads the parameters of the chosen preset.
Save Preset - Saves your current values to the new, user defined name and location.
Preset - Choose a preset from the given options, after pressing "Load Preset", values will be updated to reflect the selected preset.
Note: Dew to how this change is irreversible, preset wont be applied immediately after changing it in the Present tab. It will only replace the current state after pressing the Load Preset button.
By default, you wont be seeing anything in the viewport, you first need to choose 1 of the three methods for your points to be generated! It is done by design to not clutter the CPU with the unnecessary calculation immediately after the FT object enters the scene.
Button: Update FG - When you do changes to already picked ForestGroups objects, by default they will not update in the ForestTools system. Press this button to update the values from these ForestGroups objects.
Scatter Mode:
None - In this mode nothing will be calculated. This mode is a default one not to overload your system when you just dragging this actor into your scene.
Landscape - In this mode the system will scatter across your existing landscape in the scene (Unreal Engine's landscape)
Spline - Scattering inside the looped splines or along the path for open splines.
Static Mesh - To scatter objects on top of either collision inside of the actor's bounds or across any mesh.
Object Type:
Static Mesh - To scatter static meshes on top of the desired Scatter Mode
Decals - To scatter Decal materials on top of the desired Scatter Mode
Actors - To scatter Actors on top of the desired Scatter Mode
Level Instances - To scatter Level Instances on top of the desired Scatter Mode
Normal's Direction - Weather to use the Scatter Area's normals as objects rotation or not. Values 0-1 where 0 is objects are looking straight and 1 being fully following normals.
Usefull for grasses that are heavily affected by it but less for trees that tend to grow Up.
Use Poison Sampling for Mesh - Weather to use poison sampling to scatter on top of Static Meshes or not.
This checkbox is only used when Static Mesh scattering mode is chosen. With this off, scatterer will use world's collision inside of its bounding box and scatter on hit. With this option on, you can pick static meshes you'd like to scatter onto and itll perform a poison flood of this mesh.
Sampling - The number of points to be scattered on top of the selected surface in meters squared. Base Offset - The amount of random offset to add to the position of the points.
Base Offset - The amount of random offset to add to the position of the points.
For small objects low offset like 50 should be enough, but for the trees you might find yourself in a situation that they look like they were placed in a grid. In this case apply the bigger number to the offset.
Global Seed - controls the seed of most of the parameters unless specified by the parameter.
Meshes:
Use Forest Groups - Whether to use Forest Groups in addition to the static meshes in Meshes list.
Forest Groups - An array to pick a Forest Groups object from the scene.
Meshes array:
Static Mesh - Choose a static mesh.
Weight - Choose how much of this mesh is going to be applied at the end. The bigger the number the more of this object you going to see in the scatter.
Scale - Individually control the scale of the meshes in the final scatter.
Forest Groups - If you have meshes in addition to Forest Groups, you can define to which group this mesh is going to be applied.
Skinned Meshes (5.7+) - Add Mega Plants to scatter alongside the static meshes.
Global Scale - Global Scale for all geometry added to arrays.
Decals - Add decal materials to the array to scatter them
Actors - Add actors to the array to scatter them
Level - Add to an array of Level Instances to scatter onto your desired surface.
Asset - A PCG asset of your Level Instance to read in the scatterer. Note: You can create this type of asset by RMB on your LevelInstance object in the Content Browser > Asset Action > Create PCG Asset From Level
Weight - How many of this specific Level Assets is going to be present in the Final Scatter.
Scale - Scale of this specific LevelInstance
TAG Filter - Inside of your LevelInstance you can define a TAG and use it here in order to randomize the copies of the same level instance
Filter - How much of the assets that have this TAG are going to be filtered out per instance.
Button UpdateISM - When you want to exclude another ForestTools scatterer or any ISM/HISM actors from this scatterer, use this button to update an array of excludable objects and instances.
This function only used for excluding instance operations, every other exclude areas are done on the fly. This function only used for Exclude FT operations, every other exclude areas are done on the fly.
Sources - pick any mesh in the scene and the tool will automatically resolve your intent to scatter the appropriate algorithm.
CLOSED/OPEN SPLINES
Treat Spline as Path - will override the closed spline into a path allowing to generate points only on outskirt of the spline.
Use Spline Normal Direction - will use the direction of the tangent of the spline to make geometry face the spline direction.
Treat as Area (Treat Spline As Path = true) - will scatter points on the whole width of the path making it effectively an area of influence rather than a single strip of objects.
Spline Width (TreatAsArea = true) - multiplier for the width of the spline making it effectively thicker or thinner.
Path Distance (Treat as area = true) - The amount of offset for points to fill the area. Bigger = more spread, smaller =less.
Path Sample mult (Treat as area = true) - used to add additional points for this specific spline area if you feel like its not enough.
STATIC MESH/ISM/HISM
no additional source parameters available for the meshes.
Use Tags - Weather to use TAGs instead of an array to scatter on top of splines.
Source Tag Filter - Specify an array of TAGs to scatter meshes on top of. This also automatically generates an appropriate output, so you can combine open and closed splines, The tool will resolve everything internally.
Project Spline to Landscape - Whether to project generated points onto the landscape or not.
Just like with sources, every object you add to this array will automatically resolve to fill the correct logic allowing you to focus on creation rather then guessing which object should go where.
Excludes - An array of excluded object/spline areas from the scattering.
Use Tags - whether to use tags to automatically populate the array or not
Exclude Tag Filter (Use Tags = true) - an array of strings to look for in the scene.
Exclude All Landscape Splines - if you are not using a world partition, getting access to landscape splines might prove extremely difficult, you can exclude all of them from this single Boolean.
Closed/Open Splines:
Scale - the final scale of the Spline area.
Spline Precision - how precise should the excluded spline be.
Include Rather than Exclude - To use this area as include, affectively removing all objects but within the spline area.
StaticMesh/ISM/HISM
Mesh Scale - per axis scale of the mesh, you can modify the excluded mesh to be bigger then the mesh itself so you get an empty area further away from the mesh.
Use Precise Shape - Will parse through the components and spawn points on them allowing you to have more detailed exclude area with concave meshes and empty areas within them.
Expand Bounds - deprecated function (left for backward compatibility).
Show Debug Bounds - allows you to debug the excluded area in a visual way.
Use Advanced Noise - Now depreated function (left for backward compatibility).
UseFalloff - whether to use falloff from the excluded object or not. This option right now acts per entry allowing more control over the final scattering then ever before.
InvertFallOff - Weather to invert the FallOff or not.
Scale Distance - The distance of the FallOff between current scale and Scale Min
Scale Min - Minimum Scale the objects can be scaled up or down at the edge of the falloff.
Delete Meshes - Weather or not to delete meshes outside of the falloff that have reached the Scale Min.
Edge Noise - To apply a noise to the edge of the falloff.
Edge Extent - The extent of the noise. Defines how deep into the falloff noise can grow.
Noise Amount - The amount of noise to apply.
Noise Scale - Scale of the Edge noise.
Extend Bounds - Spline - used only with splines. you can forcefully offset the excluded spline area with this parameter.
Add FallOff Points - Weather to use subdivision for the falloff or not (Generate more points inside of the falloff area)
Points Amount - subdivision multiplier.
Jitter Amount - The amount of jittering for the subdivided points to avoid grid like distribution.
Falloff example
Distribution Map:
Use Distribution Map - Indicates whether to use the map to drive density of the points or not.
Use UV Distribution - When scattering on StaticMeshes with Poison sampling, allows to sample textures on UV space of those meshes
Channel Distribution - Chose a channel of your texture to take the values from (Usefull for when you have 3 different masks on the same texture)
Distribution Map - A texture to sample the distribution with.
Distribution Map Tiling/Rotation - Functions to help with placement of the texture.
Threshold Min/Max - The threshold in the texture to be sampled.
As an example: Pixels are usually go from 0 being black to 255 being white (Lightness), this threshold helps to decide the lower and upper threshold on the texture to sample points only in those areas. E.g. if you put the lower threshold to 0.3, everything on map that is below 0.3 is not going to spawn any points
Self Collision:
Self Collision - Whether to use self collision for the scattered meshes or not.
Self Collision Min/Max - Vector3 values for additionally modifying the bounds as X, Y and Z axis.
Self collision is a function that means to fix the issue of meshes intersecting each other. It automatically detects the bounding boxes of the applied meshes and prune throw your points using those bounds.
Clustering:
Enable Clustering - Whether to apply clustering algorithm for mesh assignment or not.
Use UV Clustering - When scattering on StaticMeshes with Poison sampling, allows to sample textures on UV space of those meshes
Channel Clustering - Chose a channel of your texture to take the values from (Usefull for when you have 3 different patterns on the same texture)
Cluster size - Decide how large the area is going to be for a single cluster in meters squared
By default the algorithm applies a base voronoi pattern assignment, if you ever feel like its not enough and you'd like more interesting shape, feel free to switch to cluster map mode.
Use Cluster Map - Whether to use a texture to drive clustering or not.
Cluster Map - A texture to sample the clustering with.
Cluster Map Tiling/Rotation - Functions to help with placement of the texture.
Visualize Clusters - A function that applies a debug meshes to help you visualize clusters better. Sometimes when you have pretty similar meshes, its hard to see the clusters. This function helps you visualize them without changing meshes themselves.
Lock Scale - Locks the scale on all three axis to do a uniform scaling.
Transform Min/Man - Randomization of the points.
ScaleMap:
Use Scale map - Whether to multiply the scale of the meshes by a map or not.
Use UV Scale Map - When scattering on StaticMeshes with Poison sampling, allows to sample textures on UV space of those meshes
Channel Scale Map - Chose a channel of your texture to take the values from
Scale Map - A texture to sample the scaling with.
Scale Map Tiling/Rotation - Functions to help with placement of the texture.
Scale Map Remap - Choose a min and max for your applied textures. By default Black = 0 scale and white = 1. Here you can define any values for black and white.
Scale Map Influence - How vividly the texture is going to affect the points. 0 is none, 1 is full effect.
Scale By Slope:
Scale By Slope - A function to change the scale on slopes.
Scale By Slope Distance - Adds a falloff that gradually leads to change in scale the closer to the slope the point is (Inside of the slope range) in cm.
Min/Max Slope scale - Minimum Maximum scale on the slope and the falloff that leads to it. 0, 0, 0 - 1st value is Min, Second is Max, Third - ignored.
Slope Angle - Minimum slope angle for this effect to be fully active.
E.g. value of 45 means that everything on the slope bigger than 45 (45-90) is going to be fully influenced by this function.
Slope Filtering - Weather to use Slope filtering or not.
MinMax Angle - Min Max angle for points to be spawned.
Angle Fall Off - Define if you want to apply a falloff for the filtered points. 0 means no falloff. Value in cm.
Height Filtering - Weather to use Height filtering or not.
MinMax Height - Min Max Height for points to be spawned.
Height Fall Off - Define if you want to apply a falloff for the filtered points. 0 means no falloff. Value in cm.
This section is only applicable to the Landscape scattering.
Material Filtering - Weather to use Material filtering or not.
Material Name - Define a name of the material you want to scatter on top of (Name must match the material layer name on your landscape)
Exclude Material - Weather you want to exclude the specific materials rather than include.
A list of functions to help you randomize colors of your scattered meshes.
Please note that in order for it to work, your master material should have Forest Color material function be applied to your Base Color. Refer to this short video for more information on how to set it up.ColorVariation 1 minute tutorial
Use Randomizer - Whether to use color randomization on your meshes or not.
Color 1, 2, 3 - Choose colors to be applied to your meshes randomly.
This creates a bit of a gradient behavior so its not just these 3 color but a bit more naturally randomized.
Use Map - Whether to use a texture to drive the randomization of colors or not.
Use UV CV - Whether to use a texture to drive the randomization of colors or not.
Sample random pixel - Will sample random pixels on the texture to apply that color to your mesh. this will create more randomized effect rather than just projecting the texture onto your points.
Please note, dew to how this algorithm is currently has limitations, it might result in 1-2 points being deleted at random.
Color Map - A texture to sample the colors from.
Color Map Tiling/Rotation - Functions to help with placement of the texture.
Color Strength - decide how strong the colors should affect your material.
Use Perfect Cut - Weather to use perfectly cut edges or not (Great for grass that needs a very defined edge next to a geometry like grass between planks in archviz)
Perfect Cut Max Height - The Maximum height that Perfect Cut has effect.
Please refer to this video to learn more about the perfect cut:
UE5 - ForestTools Update 2.0 - New Features (Tutorial)
Color variation in FT is working on per object basis, so if you have the same master material or the same objects scattered with different FT objects, you can have different colors for each FT object.
Stepped rotation - Whether to use stepped rotation or not.
Step Deg - degree to which the point is rotated.
Change By Height - Whether to use this effect or not.
Mesh Number - Decide which mesh should be considered to be placed at the given height.
Max Height - The height at which the meshes are going to be swapped.
CBH falloff (CBH = Change By Height) - Adds a falloff to ease the harsh transition between meshes. Value in cm.
This effect applies different meshes based on their height in the scene. E.g. Field trees are usually placed in lower attitudes and spruces are seen in more high places.
Change By Edge - Whether to use this effect or not.
EMesh Number - Decide which mesh should be considered to be placed at the given height.
Max Distance - Threshold for how far inside the effect is applicable. 0-1 values where 0 is considered as no effect and 1 is a replace all meshes.
CBE falloff (CBE = Change By Edge) - Adds a falloff to ease the harsh transition between meshes. Value in cm.
This effect works both with spline defined areas and distribution map defined patches.
A rotation algorithm for meshes to face the spline. This effect is useful for scattering buildings in the city blocks for an example.
Use Rotate to spline - Whether to use the effect or not.
RTS Distance - The distance from the splines to pick the points and rotate them to face the spline in world space.
RTS Subdivide - the amount of subdivision for the spline. The bigger the better but it might be quite heavy to put a big value (more than 10).
RTS Rotation - Add an offset for the rotated points. For an example if you want the points to face -X or Y, put 180 or 90 degrees in here.
Use Additional Splines - Whether to use additional splines for the effect or not. By default, this effect will use the base splines from the area tab to rotate the points and distance calculation. You can expand on those splines by using this function.
Use only Additional Splines - Whether to only consider Additional splines and disregard the base splines or not.
Ad Splines - An array of pick able additional splines from the scene.
This effect works both with spline defined areas and distribution map defined patches.
Rowed Pattern is an effect that creates a rows and collumns of your meshes. Similar to crops and fields. Only works with Spline mode.
Rowed Pattern - Whether to use the effect or not.
Rotation - Define the direction of rows.
Row Spacing - the amount of subdivision for the spline.
Point Spacing - Add an offset for the rotated points.
Random Rotation Per Area - Whether to use additional splines for the effect or not.
Layered Rotation:
Make Layered - Weather or not to use nested layers for your geometry (Like having a base dirt patch underneath a crop)
LayerOffset - Z offset of the base layer.
MeshIndex - Index of the mesh to define which meshes are going to be placed into this layer and which on top. Works as a single digit, everything below gonna be placed here, everything above = top.
BaseLayer:
Rotate Base Layer Geo - Specify the Z Rotation of the geometry.
Randomize Base Layer - Randomly Z Rotate the base layer geo.
Align Base Layer - Weather to aligh this layer to landscape normals or not.
Phyllotaxis is a pattern comonly found in nature, you can make your scatters look this way by utilizing this effect. This Effect can only work with Spline mode.
Use Phyllotaxis - Whether to use the effect or not.
P Mesh Center - Weather to use a separate center around which your scatter gonna rotate.
P Mesh - Define a mesh to act as a center of your rotation.
P Radius - Define a radius of your phyllotaxy.
P Distribution - To make it denser or less.
P Angle - Define an angle of phyllotaxy.
P Rotation - Overall rotation of the whole final look.
P Face Center - Force geometry to look at the center of the distribution
Optimization is a category for modifying some of the ISM component's properties post spawn
Start/End Culling - Define start and end to cull your geometry in the viewport.
Use GPU - Weather to use GPU spawner or not (Please note that GPU spawner isnt saved in cache so everytime you reload a level geometry will need some time to spawn)
Evaluate WPO - Weather to evaluate World Position Offset or not.
WPO Disable Distance - Define the max distance at which World Position Offset is no longer calculated.
Enable Collision - Enables a collision (World Static) on your spawned geometry.
Receive Decals - Weather or not your spawned geometry can receive decals.
Shadow Cache - Control Shadow Invalidation behavior, in particular with respect to Virtual Shadow Map and material effects like World Position Offset.