FT SIMULATION OVERVIEW

This tool allows artists to spawn and physically simulate large amounts of instances and bake results directly.
It is a production tool, it is meant for AAA workflows, providing ways of optimization in both performance and memory.

This is the first iteration, entering BETA version 3. I will be actively using this tool in projects and run into limitations. It is a great way to keep finding ways to improve it.
That said, please make sure in the next weeks to not create anything major in case early changes overwrite any work done. If anything comes up good or bad, feature requests or problems, please let me know! support@foliagetools.com and I will try to resolve it fast as possible.



FT Simulation UI
SUPPORTS UE5.4 5.5 and 5.6, ONLY WORKS ON WIDOWS

PRODUCTION VERSION

The Production version includes all features. In case you have already purchased the base version please contact me support@foliagetools.com

https://www.fab.com/listings/4f71426c-3004-40bd-9e53-bf270a867935


NOT YET INCLUDED, planned for the next weeks and months

3D scanned starter content
+ 20 rock scans
+ 20 branches and twigs scans
+ 20 ground leaf scans
+ 10 river stones

Pricing
INDIE < 100K budget
60 USD in BETA / 120 USD RELEASE +VAT

COMPANY > 100K budget
300 USD in BETA / 600 USD RELEASE +VAT

FT Simulation UI

BASE VERSION

NOT YET INCLUDED, planned for the next weeks and months

3D scanned starter content
+ 10 rock scans
+ 10 branches and twigs scans
+ 10 ground leaf scans

Pricing
INDIE < 100K budget
20 USD +VAT

COMPANY > 100K budget
100 USD RELEASE +VAT

FT Simulation UI

Sample the scene to capture and average lighting

FT Simulation UI

Sample color to help bring variation and detail to each instance

FT Simulation UI

Apply a culling radius to ensure no instances are offscreen, causing the actor to be rendered

Culling is applied horizontally at distance from spawn, and at -100 in height, in world space

FT Simulation UI

Current instances, shows total spawned

Game Thread, Helps debug current performance. Closing or minimizing as many panels as possible will help maintain a good framerate

Advanced will hold more data in upcoming versions, asset names and stats

Start simulating, will tell the engine to start simulating so you can begin working.

Bake Transforms, will end simulating and stores all data on the actor and compresses it.
Data is split in editor only and run time only.

Re simulate, this option is for future versions, allows you to turn an simulation actor back into instances to continue manipulating

Re compress, future option to change compression formats as they can be changed without loss of data

FT Simulation UI

Sample color, samples the color under each instance, process can slow down with many instances

Sample scene lighting, stores an average value of the scene to supliment ambient occlusion or replace lumen or lightmass lightbake

Sleep physics, puts all active current instances to sleep, helps cpu performance but can still interact

Disable physics, turns off all interaction with current instances, great to keep locations of what is spawned already and prevent further interaction

Enable physics, turns physics back on for all instances in current session, helps when some instances are floating

FT Simulation UI

Spawn radius, the size of area you spawn instances in

Spawn method, choose between continuous or single

Max instances, limit to how many instances you can spawn, zero is unlimited

Push strength, amount of force applied to push instances from center radius

Pull strength, amount of force applied to pull instances to center of radius

Vortex strength, amount of force to brush and sweep instances around

Height to spawn from, distance above ground where instances spawn

Spawn in folder path, folder in outliner of level / map new actors will be placed in

Compression, amount of compression applied to instances.

FT Simulation UI

Meshes to Spawn UI, allows you to manually add and change the meshes to spawn and its properties.
The Lirbary Data Asset takes priority, if there is an entry in the array it will ignore these meshes.
Physical material is not yet enabled.

Library Data Assets, this can hold multiple presets of filetype data asset. You can duplicate these and create versions for small rocks or per area ect.

FT Simulation UI

Show Radius, will toggle the visibility of the area in which instances are preserved and culled.

Culling Radius, the size of the radius from first click location, everything outside this radius gets culled.

Culling Floor Height, height in world space, everything under this gets culled.

FT Simulation UI

Visible in ray tracing, hardware lumen, large amount of data in this pass is not great

Affect Lumen Indirect Lighting, small objects should never contribute to this

Affect distance field lighting, small objects should never contribute to this

Contact shadows, good to have

Min Draw distance,

Start Cull distance, make sure to set this, distance at which instances will start to get removed. please set this, will add a warning in the future.

End cull distance, distance at which all instances are culled. important to set and not leave empty, has a massive performance impact. will add a warning here in the future

Generate overlap events, really not needed

Collision enabled, off by default

Shadow Cache invalidation behavior, important to keep static, small instances should not break shadow caching

Evaluate world position offset,

Disallow mesh paint, avoid on large amount of instances

Visible in real time sky captures, few projects need this

Can Affect Navigation, off, visual instances should not affect navigation

Receive Decals, good to have off as behavior and optimization

Cast shadow, disable all shadows

Height offset, lowers of lifts the instances up as local offset from spawn point

FT Simulation UI

Nanite settings that will come in future update

Nanite switch to fallback distance, distance at which to turn off nanite

Nanite switch to Runtime LOD, distance at which to switch from nanite to generated runtime lod

Nanite disable shadows, distance at which to turn off shadows, normally done with lods

Disallow nanite, turn off nanite entirely for this component

FT Simulation UI

Custom Data Index Light Cache, index for the material property custom data

Sample scene lighting quality, use 1 or 6 samples. VERY SLOW! Need to implement a process bar as above 1000 it will freeze for a couple minutes

Sample scene lighting offset, bias to move the sample height, higher can give better results if too much actors are close to it

Custom Data Index Red Green Blue, indexes for the material property custom data to pass along color information

Sample color offset, bias to get some different result

FT Simulation UI

Optimizations to be implemented soon
Geometry script warning, to ensure this module is enabled to run some of the required functions to create merged distant meshes

Generate runtime LOD, merge instances dynamically, use a single mesh at distance to avoid high instance count, calculating bounds for culling.

Merge limit per frame, how many instances can be merged to slow down and avoid cpu spikes

Distance to Runtime LOD, at what distance to switch

Runtime LOD Shadow only, cast shadows from merged mesh while using instances.

Shadow LOD bias, cast shadow from an LOD, can be done at lod0 to avoid heavy shadow cost for non nanite

The following commands could help reduce performance using software occlusion for instances
r.InstanceCulling.OcclusionCull
r.InstanceCulling.OcclusionQueries
ShowFlag.VisualizeInstanceOcclusionQueries

PRELIMINARY COMPRESSION RESULTS


test numbers final build third person template

471 072 768 bytes recompressed for a second time
471 027 712 bytes 10x the actor with 3 hism, = 4 444 160 / 10 is 444 000 kinda on target with 495
467 079 168 bytes actor with 3 hism components and 5000 instances = 495 616

466 927 616 bytes another test of 10 actors with roughly 50k total (new actors not copied) = 380 928... again very close to 10x
466 952 192 bytes simulation actor 10x copies of 5000 instances = 405 504... about 10x cheaper
466 583 552 bytes single simulation actor, 5000 instances at normal compression = 36 864.... 10x385 024 very on target

466 546 688 bytes base package = 4 096 difference in build
466 542 592 bytes empty level

keep in mind this is a very small sample, extensive testing still needs to be done with larger scenes, and against epics foliage tool and grass layers ect


ROAD MAP

+ Interaction nodes, make C++ functions to be implemented that can manipulate and change instances for gameplay abilities as example
+ Re Instance, have new simulation runtime actors reference and use other compressed Data
+ Adjust settings and apply changes once an actor is spawned
+ Re simulate, great for level changes
+ Generate merged runtime LOD for distance
+ Custom undo buffer
+ Distant proxy mesh switch
+ Apply new bounds and culling
+ Distant material overwrite
+ Warning radius too large, and many instances culled
+ Warning gamethread
+ Warning intance count
+ spawn multiplier
+ rebind input keys
+ Update triangle stats when selecting a group
+ Different spawn rotations
+ Sync all changes between selected
+ Weight and gravity changes
+ Customize spawn radius
+ Move instances to new actor, being able to split or merge
+ More Friction settings
+ Adjust pivot point, center and custom coordinates




Known issues

+ (If too many windows and blueprints are open) it is possible the simulation mode wont start, please close the window and open it again
+ End simulation requires pressing ESC twice due to the selection mode the editor might be in