Current Version: 1.30 (24th September 2023)

New in latest versions:

  • Blueprint/C++ Profiling
  • New Function to return reference of PerInstanceCustomData
  • New Function to update PerInstanceCustomData (works with 4.25 up)
  • Actor Pooling (1.21 also introduces events for Pooled/Depooled)
  • Component Pooling
  • Version 1.20 introduces Distributed Transaction Spawning
  • Version 1.23 adds functions for getting and setting InstancedStaticMesh Custom data
  • Version 1.24 adds some utility functions for harvesting and assimilating
  • Version 1.24 adds Blueprint Nodes for:
    • IsEditor
    • Utility Nodes to query the Compilation status and wait for it to finish
    • Utility Nodes to “Mirror” objects in blueprints, and “Place on Ground”
  • Version 1.30 adds a scalable fast runtime Procedural Population system
  • Version 1.30 adds a Subsystem to use rdInst from any actor
  • Version 1.30 adds a new system for manually adding mesh instances to rdActors
  • Version 1.30 morphs return types for actor spawning and pooling

rdInst is an optimized C++ plugin that takes care of all your Instanced Static Meshes, Spawned Actors, Child Components,Actor Pools, Randomization and Selective Hiding/Showing of these objects.

The plugin can be used in two ways:

  • As an Editor plugin, providing optimized editing and fast randomization, baking out the results into fast blueprint only actors using either just static meshes or utilizing any method of instancing – or even baked into static meshes (great for Nanite). rdBPtools is completely compatible with rdInst and uses its optimizations when you use its Base Blueprints.
  • As a runtime plugin, packaged along with your project. Providing it’s instancing and spawning routines, and its optimizations for use in real-time – such as randomizing a room to a specific seed before moving it into place. In fact, it is this part that provides the best optimization. You can have many objects in your rooms, each with their own random settings – using rdInst, you don’t even see a drop in framerate when randomizing. Blueprint routines to randomize are somewhat slower – especially when actors rely on other actors to be visible.

Just use the included rdActor as your base actor, or directly call library functions.

Instances are managed according to their owning actor, during Editing this allows fast editing of large amounts of meshes – during runtime this allows fast Showing/Hiding of actors and even sub-folders of meshes for each actor.

Non-managed functions are available too – these give raw access to the HeirachialInstanceStaticMesh Components used to create the instances.

It’s as simple as calling the “rdAddInstance” node in your Blueprints, specifying the Static Mesh and a Transform. Removing them is as simple as using the “rdRemoveInstances” – it only removes instances used by your current blueprint.

Even with the Management and Randomization system built in, you’re able to get the same performance as the Foliage Tool (or Light Weight Instances, and/or Instances created with “Asset Placement Editor Mode” in UE5).

(72,300 instances, 30 HISMCs – 12th gen i7 RTX3070ti. Megascans meshes, Nanite, HW Lumen)

Some of the main features of rdInst are:

  • Very Easy to create Instances of Static Meshes
  • All Instances are managed, and looked after behind the scenes
  • Access to the actual Instance generators for raw power
  • Complete Scalable Procedural Population system supporting SplatMaps, slope fixing, material filtering etc.
  • Spawn new Actors in a Managed way from Construction Scripts
  • Actor Pools for extremely fast Actor Spawning
  • Component Pools for extremely fast Component generation
  • Have Hierarchies of Actors/Instances, show and hide whenever, from the Editor or at Runtime
  • Assimilate child instances into their parents.
  • Apply Randomization of Child Actors Transform and visibility with a sophisticated Randomization system
  • Use “Themes”, control the sets of visible Actors/Instances by a Theme
  • Convert any Instance to a ChildComponent or a Level Actor at Runtime
  • Find the Instances Parent from HitScans
  • Fast Instance Transformations without rebuilding
  • Easy way to set Instance Render Settings for Static Meshes
  • Easy way to set Per-Instance Custom Floats for each Instances materials
  • Speeds up rendering while in the Editor – smoother editing large amounts of objects
  • Subsystem to handle instancing and pooling from any actor.

Combination of rdInst, rdBPtools and rdBuildBuddy can give you high-speed, fully functional, populated buildings

Randomization parameters can be used to add variety to the instances transform (and visibility). The Randomization system is inherited from owner actors, so it’s easy to make systems where you control all your Randomization from one Random Seed.

(note: Randomization in this demo is by Blueprint)

If you’re using rdInst as a runtime plugin, it gets included with your Packaged Build (be sure to disable the plugin when packaging if you’re not using it). The source code is well documented, and written in a way that should require very minimum maintenance in the future, very easy for anyone with VS to build to a new UE version.

This plugin is completely compatible with rdBPtools, rdBuildBuddy and rdBeacons and can significantly improve rendering times by using with these tools. It is for sale on the Unreal Marketplace.