Runtime Mesh Component

Does it work with 4.18 from github and how do you stop it compiling with your project. Last time I tried it from github it caused my project compile times to double cause it wanted to compile the RMC plugin every time.

Is there any documentation on how to use the RMC with threads?

I don’t know why you would need to recompile a plugin, that has already been compiled. And I haven’t tested it yet, but so far, whenever updated the plugin for an UE release, it worked for me. I would assume this to be the same. There might not even be a need to update the code base, so you should just try it.

I just updated to 4.18 and got the latest github version of the RMC. It failed to compile, because there seems to be just a small error, probably just a typo or sudden API change I would guess.

In RuntimeMeshComponentDetails.cpp, on line 28,

SelectedObjectsList = DetailBuilder.GetDetailsView().GetSelectedObjects();

Should be changed to:

SelectedObjectsList = DetailBuilder.GetDetailsView()->GetSelectedObjects();

In order to compile properly. For some reason the pointer returned by GetDetailsView() wasn’t being dereferenced.

You inspired me to update from 4.16 to 4.18. Got it working fine.

For anyone else wondering, just put the RMC in your project’s plugins folder. Then run a compile to let it compile the plugin. Finally, move the plugin to the engine plugins folder. This will then prevent the plugin being recompiled every time you rebuild.

I have got RMC threaded, well the vertex generation part at least. I basically created a class extending FRunnable that handled the vertex generation of a subdivided plane and then when the thread finished I pass the indices and vertices over to the actual runtime mesh pointer and call CreateMeshSection and UpdateMeshSection with it. It scales very well, but for best performance you would want to pass all the vertices and indices in one batch and not section them. The only problem I’m facing right now with this implementation is figuring out what the indices should be for the vertices now that I’m passing it in as one batch. I put up a question on answerhub addressing this if you want to check it out:…eneration.html

You should check out 's tutorial on multithreading, the implementation he outlined works very well for this use case.

I’m making a (free) plugin to generate shapes using RMC. My first shape, a circle, refuses to show up at all! Could you possibly tell me what I’m doing wrong:

edit: I’m a moron.

Are you sure your code executes? Use breakpoints or Logs/PrintMessages.
Is your material != nullptr? Is your material double sided? If not try viewing your actor from a different. angle.
Are your circle outer vertice distances correct (radius)? If they are to close to the center you will see nothing. Use Debugfunctions to display the vertex positions to be sure (UKismetSystemLibrary:: DrawDebugSphere).

Test with URuntimeMeshLibrary::CreateBoxMesh (feed the resulting data into CreateMeshSection).

Would you like to share some snipped how it is implemented? I’d like to do the same and learn threading in UE along way. =)

I’m looking into your code as I’m about to do the same for my project… ty for sharing.

Unless i’m mistaken, 4.18.1 broke this plugin in a major way :. I’m fixing it now.

edit: I’m mistaken, my project has gone bonkers.

Well the plugin does what I need it to do right now, except you can’t edit parameters in any of the created actors. UE4 drives me up the wall sometimes. Everything is a component with an actor wrapper (that has the problems I mentioned) but if you’re doing things programmatically this doesn’t matter. You can create the following 2D shapes, will fill and stroke:

There’s also a generic polygon in the works but I haven’t tested it thoroughly. I’m using this in an active project so it will get updated often. I’ll give it it’s own post when this parameter business is fixed.

Hey guys… just a question… i’m trying to use this plugin with tesselation (on the dynamicaly generated mesh) and it doesn’t work

(unless i’m doing something stupid, which i’m sure i am)

It does work for when cooking this mesh… so i’m guessing it’s a limitation of the runtime generated mesh (and the procedural too)

Any ideas?

We are using it with tesselation in Editor and Standalone without issue. You sure your material is properly setup? Does your material work on StaticMeshes? You sure its the right material, maybe there is a similar one without tesselation? Ramp up your tesselation to higher values just to test it?

Yes… the material works well in static meshes… it even works well when i Cook the RuntimeMesh to a Static Mesh (which is really weird)
So i don’t think it’s an issue of how i’m creating my runtime mesh, because the cooked mesh would fail too (unless i’m mistaken)
In the post i attached, you can see that it’s an issue of depth fighting

Thank you @duke22 this is very nice! I was about to implement shape drawing in Slate widget but I might use this as it is much more simple solution that offer more benefits!

this is something i’ll be needing too for custom water volumes (i’m using boxes right now)… i too was thinking on using slate to create that… but i’ll check out that plugin too.
@duke22 would that have issues with depth fighting like my previous post?

We are still on UE4.16. Might be there are issues with the newer version.

Updated with arrow and cross shapes. Next up is correct uv’s.

i’m using 4.15, maybe there are issues on this version