StreamingMesh models are regularly way higher poly than the original model

My art style is low-to-medium poly. I love streaming meshes because they can be used to show the gesture of the world even while it is streamed out. My world is very large with long sight-lines so this feature significantly improves immersion for my players. However, I’m finding that streaming meshes are significantly, egregiously higher poly than the original model in my case.

Currently also, streaming meshes don’t seem to be occluded, which undermines the performance gain occlusion produces if I have a wide open world with lots of trees that have streaming mesh enabled, because right now these poly-inflated streaming meshes are being rendered even while occluded.

As far as I understand, most streaming meshes are calculated during edit-time in Studio. There is no reason why Roblox cannot do better to generate these static asset streaming meshes so that they are actually an optimization. If the original model is lower poly and lower density than the streaming mesh, just use it instead.

See these tube meshes.

3 Likes

Thanks for the report! We’ll follow up when we have an update for you.

Hi @PeZsmistic,
Thank you for reporting this issue. Would you please share the mesh, model, or place file that you experienced more polygons are streaming?

Hello. The problematic models are used in this game, as well as the main version of this game. BaA:R - Development Testing - Roblox

I will DM a place with a few models that have this issue. Mirrored in this private DM too https://devforum.roblox.com/t/re-streamingmesh-models-are-regularly-way-higher-poly-than-the-original-model/3304343

I also see that after copy and pasting them into a new place file, I’m seeing the streaming meshes significantly offset from where the actual model physically is. I’ll send you the file with this issue too since this issue has occurred for me randomly for a very long time and I could never pin it down enough to make a bug report.

To get these out of the repro file I sent you, I disabled and re-enabled the StreamingMesh property on one of the given models to fix the offset. You can see that there are slightly fewer drawcalls, but polycount is doubled. It should be possible to reduce drawcalls by removing expensive materials and such, while also using the lower poly combined mesh.

Original Draw (scene) 11 3866
StreamingMesh Draw (scene) 9 6494

3 Likes

This is very true! I recently noticed this. I got a performance boost by disabling streaming meshes. via the command line. I don’t know if this is a recent issue or something that has existed in the past but it might also be that some models are already too low poly. But from a performance standpoint in some use cases it might be more efficient to not use LevelOfDetail when your streaming in distance is set very low. for i,v in game:GetDescendants() do if v.ClassName=="Model" or v.ClassName=="Actor" then v.LevelOfDetail=Enum.ModelLevelOfDetail.Disabled end end

Thank you for reporting and providing more info.
We will continue investigating the interaction of the new occlusion culling feature and the streaming.

In the meantime, I did take a look at the models shifting around and I was able to reproduce the case. The recommended work around is to "select the model and all it’s child models, and toggle the LevelOfDetails to Disabled and back to StreamingMesh. This will update the Model level of details and that should fix the offset problem. Let us know how that works and if you see further issues, please post back here. :roblox_light:

Thanks!

So we’re on the same page, the issue is with the streaming mesh generation, not occlusion culling (though there is an easy improvement to make here). The streaming mesh result has been much higher poly than the original model for several years. This is what I would like to see fixed.

As I mentioned in the above reply, yes, toggling the properties related to streaming mesh corrects the visual huge offset. However, this is totally unintuitive and unexpected, and for the longest time I did not know what was going on, and was unable to fix it. Not to mention, these models are duplicated many times throughout my game and are also packages, so the exact source of the issue was not clear. I forget the exact circumstances, but messing with these properties in this situation was not very easy or intuitive. I would love to see this fixed once and for all.