Is it possible to render mesh passed to Niagara?

I would like to use a mesh passed to Niagara through a user parameter from a blueprint, as a particle. Is this possible?

I know there are Mesh Renderers and they can have a list of meshes and each particle can pick from that list with an index, but I could have as many as 2000 meshes, so this method is very impractical.

I also know I can reproduce the mesh with many particles through the mesh samplers, but this never produces 100% accurate representation of the mesh, and also does not seem like an efficient method considering a single particle with the correct mesh would work.

So the problem is I can’t seem to set the Mesh Renderer’s mesh with the User Parameter, is there a workaround for this?

Thanks for any help.

Hey there @Rjktlf1! Welcome to the community! So don’t worry, this is actually one of the fun quirks of the Niagara systems. So you can still use user parameters, but you can’t drag and drop bind them because you can have multiple meshes. However there is a setting to bind them directly.

So make a user param for your static mesh, the go to the mesh renderer, drop down the meshes area, then drop down the index of the mesh you’d like bound, then there’s little slot for binding to a user parameter. Don’t worry if you have a default bound mesh or not, it won’t show until that parameter is set. So in my case the default arrows remain the used mesh until the parameter is not null, then the parameter is what’s used.

Let me know if you have any questions!

Hi @SupportiveEntity, thank you for the reply.

It looks like you are using UE5, the slot for doing this does not appear to be in UE4.27. Do you know if there is a way to do this in 4.27? Unfortunately I am not able to upgrade to UE5 for this project.

Oh hey sorry about that @Rjktlf1! Was handpicking a bunch of UE5 questions while I had it open and guess I missed the tag this time around. So in UE4 it was a little more complicated to pull that off. There was no standard binding so you’d have to create your own module in scratchpad, or if you know exactly what meshes you wanted to possible change to, you can change the mesh index and just set them all as possible meshes. You can bind it to an int.

Thanks @SupportiveEntity, I did already know about filling in that Meshes array and picking an index, however I could potentially have hundreds of meshes, this way is not realistic imo.

Could you give me a few pointers, or nodes that will be needed for passing the mesh in to be rendered with my own scratchpad module?


Hey there @Rjktlf1! Sorry for the late reply, I’ve been playing with scratch pad myself trying to find a good way to pull it off, but that module doesn’t expose any of it’s mesh-side logic (more so there’s no internal binding at all). I had made up a module that could take a list of meshes, and process them but outputting only goes to a bindable, which leads us back to the original problem. Sorry was hoping to make the module for you and post it here but it didn’t seem like that method is going to work either.

Ok @SupportiveEntity, Ill use another method for now. Thanks for trying it out, I can move on knowing I wasn’t missing something.

1 Like