InfinaWorks - Procedural Instance Spawner

The Procedural Instance Spawner is made to enrich game environments through procedural spawning of instanced static meshes, at runtime or in editor.

(All vegetation, rocks and debris in the above pictures where spawned in runtime using the Procedural Instance Spawner.)

  • Utilizes background threads to minimize performance impact and is fully deterministic.

  • A custom system for generating collision only where and when needed ensures smooth gameplay in large and detailed worlds.

  • Includes Blueprint functions for removal of spawned instances in runtime.

  • Functionality for writing and reading any data to instances in Blueprint with possibility to have float variables directly accessible in materials as Per Instance Custom Data floats.

Video resources:

Video tutorial - Get Started using Per Instance Custom Data

Presenting Version 1.4

Video tutorial - Using the Smart Collision System

Environment showcase video 2 - Large spruce forest

Timelapse of creating a forest environment using the Procedural Instance Spawner plugin

Environment showcase video 1

Video tutorial - Get started using the plugin

Written Documentation

Features:

  • Runtime spawning

  • Utilizes background threads

  • Hierarchical synchronization, enabling complex worlds

  • Highly optimized collision generation, allowing for smooth performance in large, detailed worlds

  • Support for Large World Coordinates

  • Support for spawning on planets

  • Accurate collision and proximity tests

  • Filter spawning by object types to spawn on, object types to spawn under and object types that blocks spawning

  • Center spawning around active camera, world location or a specified actor

  • Advanced settings for rotation, scaling and height offset of spawned instances

  • Settings for spawn filtering includes: Height interval, Slope intervals, Collision checks, Sphere traces, Object Proximity, Edge Detection, Spline Detection, Cluster filtering and filtering by Surface Type/Landscape Layer

  • Functionality for writing and reading any data (using user defined custom structs) to instances in Blueprint with possibility to have float variables directly accessible in materials as Per Instance Custom Data floats

  • Presets to immediately get going

  • Settings that allow for fine tweaking

  • Prepared for adding of custom spawn point filtering and/or function for finding spawn points

Included Blueprint functions:

  • Regenerate

  • Remove Spawned

  • Reset Removed

  • Set Collision Mode

  • Line Trace Spawners by Channel

  • Get Overlapped Instances

  • Get Instance Custom Data

  • Set Instance Custom Data

  • Reset Instance Custom Data

  • Remove Instance

  • Remove Overlapped Instances

  • Restore Removed at Location

  • Get Spawner Data

  • Load Instances From Data Structure

  • Update Splines Data

  • Add Spline Data

Additional Actors and Components:

  • Planet Center Marker (Actor) - For spawning on a spherical worlds. (Place at center of planet to spawn on and set Planet Radius.)

  • Spawner Collision Invoker (Actor Component) - Lets spawners track the actor attached to and update collision as needed.

  • Spawner Projectile Collision (Scene Component) - Emulates physics collision (and trigger hit events) with instances of spawners using the Smart Collision system for the component it is attached to.

Updates:

Version 1.6

  • Parallelized generation for significantly faster spawning on most hardware.

  • Added support for spawning on planets.

  • Added actor class "Planet Center Marker".

  • Added Spline Detection.

  • Added material function "AlignToWorldUp" (Replaces "AlignToWorld-Z").

  • Cluster filtering now visualized in the spawn visualization decal.

  • Added material function "ClusterFilterMask".

  • Updated the CustomSpawnPointFunction to be compatible with spawning on planets. (The CustomSpawnPointFunction now need World Location instead of World Z.)

  • Spawners now skip auto updating when camera/actor to center spawning around is far above the max Spawn Height Interval. (Check "Disable Update Cutoff Height" to not paus spawning.)

  • Bug fixes.

(Regenerate all spawners to re-initialize them and get them spawning with new improved speed!)

Version 1.5:

  • Added functionality for writing and reading any data to instances in Blueprint with possibility to have float variables directly accessible in materials as Per Instance Custom Data floats.

  • Added Edge Detection.

  • Added Blueprint functions: "Get Overlapped Instances", "Restore Removed at Location", "Get Instance Custom Data", "Set Instance Custom Data" and "Reset Instance Custom Data".

  • Bug fixes.

(Per Instance Custom Data is supported for Unreal Engine 5.5 and onward.)

Version 1.4:

  • Added a new setting "Collision Mode", and a new system (Smart Collision) for generating collision only where and when needed, drastically improving runtime performance!

  • Added support for tracing of complex collision to proximity checks and collision detections (regular Collision Check and Sphere Collision).

  • Improved precision on regular Collision Check (Both for tracing of simple and complex collision).

  • Fade in of spawned instances for reduced popping is now compatible with nanite meshes.

  • General performance optimizations.

  • Bug fixes.

  • Useability improvements.

(On updating the plugin, existing spawners will have their Collision Mode set to either "Collision Enabled" or "Collision Disabled" depending on if any of its Instance Types have collision enabled. The mode: Collision Enabled identically matches how the spawner previously worked.

For improved runtime performance of spawners with collision, try switching to the new Smart Collision system!)

Version 1.3:

  • Bug fixes.

  • Added setting for including objects with mobility set to Movable when tracing (Off by default).

Version 1.2:

  • Significant generation speedup!

(After updating to the new version, please regenerate the spawners to ensure optimal performance. This will prevent duplication of instances spawned with previous versions.)

Version 1.1:

  • Added support for filtering by Surface Types.