Download

Object Array Blueprint

Hi Everyone,

The object array blueprint works by adding the static meshes or blueprints you want then arraying the objects out in the XYZ directions. It has 31 features that then allow you to modify the basic array to make it unique and random.

For example a very simple one would be to add a traffic cone static mesh and stretch out the array in the X direction. Set the offset to 100 units with a range offset of 10 in the X & Y. Then enable the random Z axis rotation. This will place the traffic cones at 1m offsets but with a ±10cm range and the rotations on the Z axis would be random making the traffic cones look like they were placed there rather that everything being perfectly square. To improve this even further you could use a spline type array with snap to ground, snap align to surface to make it sit on uneven ground and simulate physics so it can be interacted with during game play.

List of Features:

  • Runtime support so you can modify the features during runtime
  • Array objects in the XYZ coordinates
  • Add Static Meshes or Blueprints to spawn
  • Object Array Types:
    • End Point Set
    • Manually Set
    • Spaced Evenly
    • End Point Direct Distance
    • Spline Aligned
  • Master, Rotation & Scale Seed numbers
  • Random Master Seed
  • Unique Object Only - Spawns only one of each object type
  • Offset Range - ± offset range
  • Set Rotations
  • Random Rotation in each axis
  • Rotation Range - ± rotation range
  • Keep Objects Flat - Keeps the spawned object laying flat
  • Align vertically - Keeps the object vertically aligned
  • Rotation List - Only rotates the objects using the rotations set in this list
  • Random Rotation Seed
  • Set Scale
  • Scale Range - ± scale range
  • Uniform scaling
  • Scale List - Only scales the objects using the scales set in this list
  • Random Scale Seed
  • Snap to Ground - Snaps the object to the next collision plane
  • Snap Align to Surface - Aligns the objects to the surface
  • Snap to Ground Stack - Allows objects to stack on top of one another
  • Snap to Ground Vertical Adjust - Objects can be lowered or raised from the surface
  • Actor to Ignore - Allows objects in the environment to be ignored so they don’t get snapped to
  • Simulate Physics - Allows static meshes to simulate physics.
  • Save/load Physics Transform - Allows the objects to fall in simulate and to be saved in the editor
  • Do not Spawn List - Set which objects not to spawn
  • Randomise do not spawn list
  • Materials
  • Keep Constant Material Scale

Quick overview:

In depth look at all the features:

Runtime Tutorial:

Screenshots:
Everything in this scene except the walls, roof and landscape are using the object array.

361c1c3de5dd8b82581ca99b10d9a6383ec7d3b4.jpeg
Example level showing object array types.
Object_Array_Screenshot_02.jpg
Rotation and scale modifiers
df23cb289f556e28424527fc813bc38599e243a1.jpeg
Snap to ground, simulate physics and do not spawn list.
3a810b9e7cdaa3fee0e48bd3a823a754f76dd481.jpeg
Simple materials options.
6e6570c72d8bf314ba50cb25b438052b16b13bb0.jpeg
A list of all the options that the object array blueprint has.
9d3ccaa554e2142c502740f33d9397a253246d43.jpeg

Support:
Email: scottreidue4@gmail.com

Hey gratz for all these options, it sounds really good, gg.
I watched at your overview video, you used a staticmesh for your example, does your tool accept BP_Object? Thanks in advance for your answer :wink:

Hey Macoll, Yes the first option is for the object type and you can select between a static mesh or a blueprint actor.

Hey when is this going to be released? I really want to use this to handle my object spawner. Do they incorporate movement? Such as spawn and then offset location back and forth? Also does it keep track of how many are spawned in array and is notified when one is destroyed?

The release has been scheduled for the 20th of this month so not too far away now.

It doesn’t have any movement in the offsets during runtime but could easily be modified. As most of the blueprint has been done in the construction script it can’t be updated during gameplay but more script could be added to the event graph so it can manipulate the already spawned objects. As it is now you could handle a local offset movement within the blueprint for your object spawner and then add that blueprint into the object array to be arrayed out.

Each blueprint within the object array will be listed under the main object array in the object outliner.
WorldOutliner.PNG

When creating the array it will list the quantity within the array as a print to screen so you will be able to determine how many object spawners you have at the start. To be able to detect if one of the objects are destroyed it could easily be setup to have the level blueprint or character listening for the object spawner and then it can report if one is destroyed. I just quickly tested this by setting up the level blueprint to listen for all actors of class and then list the length on the screen. When one of the objects were destroyed it updated on the screen.

I will update this post when it is released. Let me know if you want any more information?

The Object Array Blueprint has just been released!

Go and have a look.

Thanks for the info :wink:

After a few people requesting runtime support I have been able to implement it. I still need to test it some more to make sure all the features are still supported during runtime though.

One big issue I’m currently seeing is if there are quite a few objects then when the array is updated it will lag the frame rate because it will run through the entire script each update. It needs to update the entire script as each step relies on the previous step to build the array.
Up to 10 objects seems to have no impact on the frame rate when updated each frame. But at 100 objects on my machine it dropped 30 fps with all the objects updating every frame. Changing the update rate to 0.1 of a second however, FPS impact was minimal.

Once I test it some more I will post a video demonstrating the new runtime update and submit it to Epic to update the files.
In the mean time here is a quick demonstration.
https://youtube.com/watch?v=Uk7SdmkQ1ns

This is great work? Did you implement this in C++. If so, is it included in the package? I prefer to fix programs myself or modify it to suit my preference rather than pester the original author. :slight_smile:

This is blueprint only with no current c++ implementation. I’m sure you could modify the variables through c++ for the runtime modification but I’m not a programmer so I don’t have much knowledge in that area.
I built it to be able to build levels quickly with the runtime modification support only just implemented. It isn’t live yet but the files have been submitted to Epic.

Do the objects placed using your plugin work with static/baked lighting or can they only be dynamically lit?

If you aren’t planning on changing any of the variables that modify the object array during runtime you can disable runtime updates so the object will only be static.
In this video https://youtu.be/w9JYqx_uVZg all of the objects are static and therefore could use static/ baked lighting.

Awesome, thanks for the quick reply :)! I’ll definitely get this once I get around to building my environments, then.

Hi Everyone,

The Runtime Update is finally live!

You can find a tutorial below that will explain how to setup the blueprint so you can modify all the features during runtime.

https://www.youtube.com/watch?v=5LDkUKQv7-k

Let me know what you think and if you have any problems.

Tocs

How does it handle let’s say 1500 objects (static meshes or blueprint actors) with simulating physics enabled ? I’m simply wondering whether this method of instantiating through array would work without dropping frame rates masively.

Hi Shin_ji, The object array doesn’t currently use instances as I wanted it to have a randomising object output also.
If I had set it up using instances then it would only support however many static mesh instance components I added, which would limit some of the functionality. So I decided to forgo it.
It would be easy enough to change the blueprint to support a set amount of different instances and I might update it to support instances.
Cheers.

Update 2

I have recently updated the market place content.

  • It includes a new ‘Do not spawn Volume’ that if overlapping any component within the array it will remove those objects. E.g. if you have a picket fence and you want to put a opening you can simply use the volume to overlap that area and enable Do no spawn volume within the object array blueprint.
  • It also includes another rotation option that will rotate any object using a spline array along the spline.

Shin_ji, I have been able to create the object array to use Instances. I tested it with 4000 of the default Epic chairs and it only reports 51 draw calls. If I change it to static mesh only, then it goes up over 9000 draw calls.
I will likely limit the different types of objects the array can have at one time to only one or two, as instances would likely only be used for bulk of the same type of object.
I will need to test all the functions with this new setting to make sure everything works with it.
I will try to get it submitted to Epic soon and with a video posted here showing the new settings.
Cheers.

Update 3 is now Live!

It includes a new array type of static mesh instance. If you have an existing ‘static mesh’ array you should be able to toggle it over to ‘static mesh instance’ array and it should work. It comes with improved performance by dramatically lowering the draw calls.

There are a few features that don’t work or are reduced in functionality due to the way instances are hardwired but most will behave the same as the static mesh array.

Feel free to contact me on my support email or here in the forum if you have any questions or feature requests.