New Beta Feature: LevelOfDetail Property for Models (Enabled Globally)

This looks awesome, can’t wait to try it out!!!

2 questions though:

  1. Will this feature increase server or client load times? I’d like to know how many unique models I can have using this feature without it being an issue on startup.
  2. Is there any possible/hacky ways I can force an object to stream to the client? I’m aware of the PlayerGui method but just wanted to see if anybody had any other solutions.
3 Likes

Due to numerical round-off, we can’t guarantee it will perfectly know these models are all the same, but you can expect it will know as long as these models are truly identical.

6 Likes

Will this ever be supported ? would be nice :slight_smile:

Will there be a way for us to manually lock a model’s LOD to the lowest avaliable? This may be helpful for testing, so we can see what the model would look like from any position.

3 Likes

Basically, you add a object from the server to the player’s PlayerGui.
Gui’s don’t replicate to other clients, so you basically can load in objects from the server to a specific client without taking up the memory of other clients.

2 Likes

I’m loving the look of these Streaming Enabled updates, but one thing a lot of people are still requiring is a whitelist for streaming to have certain models in game the whole time should it be necessary. A lot of people would love to use streaming enabled, me included, but without a whitelist where the client sometimes needs certain models in the whole time, it can’t be used.

Is there any info on whether a whitelist for Streaming will become a thing?

3 Likes

2020 on roblox has been the polar oposet to the rest of the worlds 2020. change my mind.

2 Likes

This release requires the model size to be much smaller than streaming radius so that it can switch to precise at a far enough distance when getting close. The bounding box of the massive tree off in the horizon is close to 1000. The streaming radius is set to 1024. Need to reduce model size or increase streaming radius.

Get the point that you expect streaming depends on distance as well as view angle.

5 Likes

I’ve tried it out… and StreamingMesh crashes studio.
image
dunno if i had any specific circumstances that made roblox go “roblox physics” logic mode (like beams, surfaceguis and tall buildings that exceed maximum part size). probably needs a bit more work, like making something that can exceed the 2048 stud size limit without having a seizure

2 Likes

Not only that, but a model should really only be considered to be outside the streaming radius if more than 50% of it is outside (using just the bounding box for this calculation should be more than enough accuracy). A model that is 99% inside the radius where only a tiny piece of it intersects the radius should not be considered “outside” by any means. Or, you could even expose a configurable property where we can adjust how far inside the radius a model has to be before it is considered to be “inside”.

this is great especially when you have a huge map

1 Like

This is a great step for network streaming. Will we be able to create our own representative meshes in the future? Blobs are better than nothing, but I’d like to have more precise control over how my map looks at a distance.

5 Likes

This tended to happen to me, but now stopped.

Something seems a little off somehow…
(Streaming Target Radius: 512 - far)

(Same STR - close)

Streaming disabled


For some reason it’d seem this small red arena is what’s being blown up (first image)

Game:

4 Likes

It will increase client load time to stream all generative meshes and this is the reason why using low-resolution meshes. That being said, ~800 unique models should not be an issue on startup.

2 Likes

crashes stopped, but now everything with LODs activated is massive blobs until i put streaming scale above around 5000 or 6000, and above that it doesn’t do LODs at all…? the massive blobs only load when i get inside of them too. am i supposed to group individual buildings or did i do it right by grouping individual streets?

2 Likes

I think you should set streamingMesh to individual building and ensure that each bounding box of these buildings is much smaller than the streaming radius (default is 1024 studs). Maybe you don’t want to
set streets to streamingMesh.

3 Likes

There’re no plans at the moment to support texture coordinate in representative meshes, but, for MeshParts, this release has sampled textures to define vertex colors.

3 Likes

One issue I came across with this nice feature is invisible parts. So for my ongoing project, I have a part of the city thats filled with trees and I decided to use particle emmitters (basically invisible parts) to add fireflies flying inside of it. Example of what I’m talking about:


So then I decided to test what the forest would look like from far away with all those invisible particle emmitters and this is where my issue appeared… As you can see from the picture, even though the parts are invisible, you can still see their color which ruins the image of my forest from far away.

Is it possible to make it so that it ignores invisible parts?

11 Likes

You can set a model to StreamingMesh or Automatic per-model basis. Assume you have nested model hierarchy:

  • city (model)
    • tree 1 (model)
      particle emitter
    • tree 2 (model)
      particle emitter

If you have set city to Automatic, tree 1 and tree 2 to StreamingMesh, you can drag the particle emitters out and re-parent them to city to ignore them.

3 Likes