Improvements to Model Level Of Detail (LOD)

Can we use this without streaming?


When enabling Model LOD it’s obviously going to affect gameplay for low end devices, since they have to render way more, if you have it on a high level ofcourse.


I’d like to have LOD’d models in the faraway distance for players on Graphics 1 - is this possible with certain settings, and if not, is it in the plans? I’d like this for the purpose of maintaining giant Points of Interest within the map, so they can orient themselves.


Streamingmesh ON

Streamingmesh OFF

It’s much more detailed with the new update, at least it’s not confusing and assuming it’s far away, nice :+1:


Will we ever be able to EXCLUDE models from streaming enabled?

When will the LoD be optimized for larger models such as skyscrapers or statues, as they currently look wacky?

Still, I am really excited for further improvements for the LoD system and streamingEnabled. Will we ever be able to EXCLUDE models from streaming enabled though?


This update is something I have been looking into, love it! It’s just like GTA 5’s approach towards rendering imposter meshes though I believe they hand drew the meshes and added extra steps in their render pipeline.

Would anyone know if this similar to Unreal Engine’s Nanite though or is this an in house Model?

If it is, would there finally be a possibility of adding real world reflections? This would pretty much be the first step if so.


There’s actually a whole website explaining how GTA 5 renders, and how it’s graphics work:
GTA V - Graphics Study - Adrian Courrèges.


Haha yeah that was the source I mentioned, plus some videos of developers breaking down the steps. Glad to see more people saw it since it’s a work of art

1 Like

Oh, my fault :grin:

It sure is a piece of art, shows how GTA V works… I wonder how it’s traffic system is made though? But I digress, this update is really exciting.

Hope to see more Streaming and LoD Improvements soon!

1 Like

Have you checked if the part was anchored? That may be the issue.

Not gonna lie, this problem of yours is likely the fault of the developers of whatever games you’re playing.
There is no reason why a Roblox game would not out-perform another game unless it’s made poorly.


Graph nodes are placed at intersections, junctions, corners and curves. Pedestrians/vehicles are given a random node far away, which they travel to using a version of the A* pathfinding algorithm to find the shortest possible path of nodes along the the road or the sidewalk. The target node is again randomised if they make it to the node before they despawn.

This is a run-down version of it, since there’s other things to include such as detecting and moving around blockages, pedestrians crossing roads etc.


You can… right now! Set ModelStreamingMode to Persistent.


Oh man, that’s exciting! Thanks for telling me!

1 Like

“Persistent” break humanoid and animations

Follow updates / report bugs on this post: New Improvements to Streaming Enabled

It’s a very new feature so there’s some bugs that are still being ironed out.


I didn’t test yet but I hope lod bugs are also fixed with this update…
There were a lot of bugs with LOD (and whole streaming enabled system but I wont talk about it here) for like a month.

Lod model would appear on different location than location in studio, lod model would not load when you go near it, lod model would be so bigger than it’s actual size
I have to note that unions are used in these lods

Maybe these bugs are fixed in this update but I just wanted to mention this because no one else did. I will test everything again soon.

Can you share more details on what you are referring to @VladimrLenin? Are you able to file a bug report if you are seeing issues with persistent humanoids?

1 Like

The blocky look is from an older version of the LOD. Do you by any chance have an old Roblox Studio version running?

1 Like


  • Player character’s ModelStreamingMode is set to Persistent by server script instantly after CharacterAdded
  • May be fixed in studio after adding wait(1) before setting ModelStreamingMode to Persistent


  • The bug occurs if animation is played by server
  • The bug doesn’t occur if animation is played by client
  • It doesn’t matter if ModelStreamingModel is made Persistent from studio or set by scripts. Even adding wait(1) after or before playing animation didn’t fix it.

Someone probably limited my perms in devforum so I can’t create post in bug topics