(BETA) LODService Module + Plugin - LODs and billboards for (almost) every model

another tool (unknown if it still works) seem to use this to load things

just spitballing here

1 Like

This tool seems to work, thank you so much! Even though it needs a third party application, it’s a sacrifice I’m willing to make, considering, as you said, we’re already using local plugins. I’ll just need to implement a .mesh converter plus see how roblox encodes image files to deal with those aswell.
Thank you for the help and feedback!

1 Like

Wen :backhand_index_pointing_left::backhand_index_pointing_right:

im lowk too busy/lazy to just fork it myself atm

I’ve finished the mesh decoder, I’m currently working on a png to editableimage converter for texture usage, which is taking me a while because it has like no documentation on it (specifically zlib compression), but I’ll update it as soon as I can.

1 Like

thanks for the updaet!

1 Like

Okay, I’ve finally finished implementing the assetdelivery conversions + fixed some other stuff, here’s the application if you want to process toolbox models, just have it open while using the plugin: GitHub - TylerAtStarboard/RobloxAssetDeliveryProxy: Used for MeshVox and other things I need AssetDeliveryFor, because Roblox requires cookie authentication now and I don't want to send my cookie to roproxy
I’ve realized that vertex clustering looks terrible on high detail models, so I’ll be working on implementing another mesh decimation algorithm, after that’s finished I’ll make a youtube guide on using this plugin
(The billboard rendering system also needs quite a bit of improvement but that’s a later project)

4 Likes

This LOD resource looks and is interesting. I’ll try to view this post when the resource gets the full update, or you can let me know! Good j*b on it!

please anyone do not flag this for ā€œnecropostingā€ im tired of this

1 Like

Thank you! I am almost finished with the update (bit of a ui rehaul + another algorithm to choose from), just trying optimize the new mesh simplification algorithm (quadric mesh simplification) so that it doesn’t take 80 years to run on models with tri counts above 60k.

Edit: I’ve finished the algorithm (still pretty slow but ive done all i could), ill update this sometime this week

1 Like

I’ve released the update, which reworks the ui and adds a new algorithm which is a lot better in most cases than vertex clustering, but it is quite slow
QMS (the new algorithm) basically relies on edge contractions and vertex merging while maintaining volume, and it repeats these contractions until the target tri count is reached. Models with high detail, like the example below, get kind of demolished by vertex clustering, which is why QMS is a great alternative, as it keeps most of the geometry (keep in mind I did have to use a tri count below 20k due to EditableMesh restrictions)


Keep in mind the result showcased here took about 10-20 minutes

I have not had much time to test this new version, so please tell me if I accidentally broke something

2 Likes

Just updated the plugin and fixed a small bug that made vertex coloring completely overwrite part coloring, now vertex colors should properly multiply with any other color data

1 Like

Quick little update, added ambient occlusion to billboard generation, so billboards finally look (mostly) accurate to their original model (plus I fixed some bugs involving plugin previews), here’s how it looks right now: Watch ambientocclusion | Streamable

Awesome resource! Have you considered using Roblox’s LOD algorithm? It fares quite a lot better than QEM on ā€œin-the-wildā€ meshes: Simplifying Textured Triangle Meshes in the Wild

1 Like

no hate but the ui looks like an exploit menu, (not that it looks bad it just came to my mind)

Thanks, I’ll look at a few potentially better simplification algorithms in the future, but right now it’s mostly bottlenecked by the fact that meshes either have to be vertex-colored (low visual quality) or have their textures batched and baked in some way, which would need separate meshes in certain cases (inefficient with memory). Right now I’m working on something else (acoustics), but I may come back to this in the future and rewrite a few parts of this. (Looking back 7 months the code is pretty bad)

I didn’t make the UI, it’s a library called Iris, I’m pretty inexperienced with UI design so I can’t be bothered to make my own

Are you planning on opening this to contributors, as in open-sourcing this so people can contribute to this project? I would like to assist with adding some more interesting LOD generation/load patterns, as well as maybe helping add in Actor support for multi-processing that stuff. I saw you have a module paired with this for LOD loading and I think some interesting techniques like culling could be used for alternatives when it comes to more complex dynamic scenes. E.g black hawk rescue mission uses something similar for their LOD’s which are per floor

1 Like

Yes I’d love to, do you mean like a github repo for forking and contributions or some other service? Another thing, sadly actors cannot be used in this case, because edge collapse is a sequential algorithm, and the loading is done through reparenting (only way to FULLY remove a model from the rendering pipeline)

adding this later I realized that the billboard process can actually be parallelized now that RaycastLocal is read parallel

1 Like

Gotcha. Well there are a lot of ways to turn a sequential solver into a parallelized one. Some examples include graph coloring, which is used for sequential impulse solvers and stuff. But yeah, I meant a GitHub repo

1 Like

honestly fair, some people are better at other things than some other people

THIS IS PEAK not gonna lie, this is really what the community needs!

1 Like