Turning existing static meshes into (hardware) instanced meshes - how?

I have a bunch of existing static meshes. I am planning on adding LOD variations to those and I’d like to turn them into instanced meshes (the project is for mobile platform) to maximize performance (planning on using those for modular level design).

How do I do that?

Thanks

Bumpy bump?!

there’s a plug-in that may be of use to you. its called ‘ramas victory plugin’ its fairly old, kinda ugly, and im not sure how well it works, but it does have a one-click conversion for static meshes to instanced static meshes, and may be of use to you :slight_smile:

[video]https://youtu.be/iC1sjgalEJg?t=43s[/video]

bear in mind though that instanced static meshes aren’t compatible with per-instance LODs. if you want to use LODs, you’ll have to use Heirachical instanced static mesh actors. if you can find the blueprint that ramas plugin makes you can copy-paste the array data from the ISM actors within the blueprint to HISM actors and they will work better.

Thanks @Construc_

Yeah, I’d probably need HISM.

Btw, why isn’t there any tutorials explaining how to make hierarchical instanced static meshes?! I figured that the most intuitive way would be set up one mesh and then simply duplicate in the scene (normal level design workflow).

you’d think, but that’s not why they were made so they are a bit… odd, for us level artists :slight_smile:
Edit within your blueprint your assets as ‘instanced static mesh’ actors, then copy-paste the array data to ‘heirachical instanced static mesh’ actors. HISMs can’t currently be edited in the viewport by hand.
using ISM actors, you have to use the ‘instances’ array and add/duplicate instances there and move them around. go look at some of my past streams I did on Twitch to see how I do it.
(Protip: use alt-LMB to multi-select meshes when using ISM actors.)

Aye, thanks. I’ll check out that video.

Hmm… Too many videos, too little time :confused: Could you please specify in which video you create ISM actor?

So while I was digging the subject, I came to understanding that a single ISM actor contains static meshes that get instanced. is that correct?

So essentially BP adds N-number of instances of given mesh and it’s not possible to manually manipulate individual instances in the scene. That might be fine for things like floors, columns, walls, etc., but useless when trying to make modular caves and rock formations, as individual instances should be moved/scaled/rotated individually in the scene.

How can I first build my scene elements using to-be-instanced static meshes, and then add those to ISM BP as instances? (without using Rama’s plugin)

Thanks

well, you’re only half-right.
ISM actors can be changed in-viewport, which is what I’m doing in whatever video you watch if you watched one where I’m making factories :slight_smile:
Just make a blueprint -> add component -> instanced static mesh ->set your mesh, start adding instances and moving them about.
you can alt-select to select more than 1 instance, but you can’t select more than 1 type of object at a time. you can use the arrow drop-down to duplicate instances so you dont have to move every instance of the mesh from the world origin every time.
they will not update in real-time if you have the editor viewport open as well to see if your caves etc are lining up in the world, but they will update for every instance you add.
if your meshes have LODs, you’ll want to add an Heirachical instanced static mesh actor to the blueprint with the same world origin and mesh as the ISM actor and then right-click the ‘instances’ part of the array of the ISM actor and copy-paste the array over to the HISM actor.
This is because ISM actors compute their LODs based on the entirety of the array, so for a per-instance LOD setup you’ll want to use the HISM array, but you cant manually edit HISM actors in the viewport (only ISM ones, hence the double-actor BP). set the ISM actor to ‘not visible’ and you’re good to go :smiley:

There’s a discussion over herewhere we’re trying to come up with a tool that will take the copy-paste data from the editor viewport and convert it to something that a HISM actor blueprint can understand, if you wanted to pitch in :slight_smile: