Levels of Detail for Mesh Parts

We’re excited to announce Level of Detail (LoD) for meshes. You can now choose to render MeshParts at different resolutions depending on the distance from the camera. There are 3 levels of detail: the original mesh and 2 automatically-generated lower-resolution levels, each with about half as many triangles as the next level up. Resolutions switch from high to medium at 250 studs from the camera, and from medium to low at 500 studs.

To activate mesh LoD, set the RenderFidelity property of the MeshPart to “Automatic”. This can only be modified in Studio or via a plugin, not through a script. Note that automatic LoD generation works best for MeshParts without textures.

IMPORTANT: Newly-imported meshes are LoD-compatible by default, but if you choose to use LoD for an older mesh from the toolbox or a mesh you had imported before last week, that MeshPart will get a new MeshID. This means the MeshPart will need to be moderated again, so there will be some delay before it becomes visible in a published game.

WARNING: Because of some recent updates, you might have issues when switching renderFidelity to Automatic for more than 3-4 parts simultaneously. The property value will change but LOD switching will not be activated. This only happens to old, non-LOD compatible meshParts. We are working on a fix.

210 Likes

Excellent. Let’s see how well it performs for low-end users.

17 Likes

This will make performance so much better on lower-end devices such as mobile. A great update, keep them coming.

8 Likes

There are a couple of known issues:

The fix for both of these will be released next week. A temporary workaround is to apply a texture to the meshParts.

38 Likes

I’m interested in the potential that such an update has, but do have a couple thoughts on how much control we have over this?

Will it be possible to specify the distance between changing from one LoD to the next? What about having a higher/lower amount of LoD levels?

Along with that, the RenderFidelity we have to choose is between Precise and Automatic. Does this mean we’ll be able to upload our own LoD levels in the future? There are certain methods I use when making meshes that I feel an automatically generated LoD level wouldn’t be able to handle properly. That and more control over how the mesh changes is always better.

Really excited to see what this new update can do for performance, considering I’m on a low-end device and absolutely love to learn how to cut down and help the devs I work with open up their games to users like me who don’t have access to something more powerful.

26 Likes

Is it possible to do something similar with Union Operations?

2 Likes

This is pretty neat. As you said, it doesn’t do so well with textures. Will we be able to upload our own resolutions in the future to prevent stuff like the image below from happening?
image

7 Likes

Amazing feature, this can seriously help to improve performance on mesh-heavy games.

I’m super excited for the next feature. :wink:

12 Likes

Different teams, it’s not exactly by order.

Nevertheless, I couldn’t agree more.

7 Likes

Will the mesh part be affected by the detail or the texture itself will be affected? I don’t want to import meshes that looks pixelated.

2 Likes

This is a great update that serves to clear up some lag caused by mesh parts.

However is there any way to customize when they become each quality or will there ever be a future update that does so?

All in all it is a much needed update and one that will really help game devs. It’ll also help games that previously may not have mobile support due to consistent lag.

3 Likes

This is a benefit for me, including low-end users, and I have a pretty bad computer setup anyway. And it also gives devs more control over meshes, and Unions!

Kinda unfortunate that you can’t change it through a script. Although how would plug-ins do this without scripts(Unless they use loadstring?)?

Why does it need to be moderated? If old ones need to be moderated they why don’t new ones get moderated as well?

6 Likes

there is a bug where if you set many meshes to have RenderFidelity automatic, only some of them will be set, and then when you re-try to set the ones that weren’t changed, it instantly changes their property but doesn’t actually give them new assetids and doesn’t say ‘Finished simplifying x mesh parts’

There’s no immediate plans to support custom LoDs or switching distances, but we do think that it is a good idea and we’ll look into it.

9 Likes

Union operations should already support this, there’s a same property for them. Is it not working for you?

3 Likes

We are working on improving automatic handling of textures but there’re no plans at the moment to allow users upload custom resolutions.

5 Likes

The texture will not be affected. If you export meshPart back to file the mesh should also be same as imported one (after the bug fix).

No, it’s working. I just wasn’t aware of it.

It seems that I had it set to Precise rather than Automatic, which made me think it didn’t exist.

2 Likes

New ones will also be moderated, but some users might be surprised that an old mesh, that had been moderated previously, will have to be moderated again just because they switch renderFidelity property. It is a quirk of a current system but we working on making re-moderation unnecessary.

3 Likes

Did you check if those parts switch resolution when you zoom out after the second time you set renderFidelity to Automatic? If not, send me that place please, I’ll try to reproduce.