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

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

You are right, I can disable it. Although it still seems like a waste of Memory Usage to load parts that shouldn’t load with StreamingEnabled turned off (since anything with transparency set to 1 doesn’t show up at all without StreamingEnabled), even at low detail. Additionally, in the case I got too many of them and not grouped properly or I forget to group some in a large-scale map, I would have to manually find them, go over them and disable them which in this case is a waste of time on my part :man_shrugging:

1 Like

Disabled:


Enabled:

The idea is good, but the LoD needs improvement.

Additionally, I think streaming as a system needs some attention currently. This and pre-streaming are nice, but Streaming still has very clear fundamental issues which make it difficult and time-wasting to use - i.e. a lack of part stream-out control, and no atomicity among part collections streaming in or out. Developers have been asking for basic control since its inception several years back.

8 Likes

Are you modeling these remote buildings using large simple boxes? One box for each building?

3 Likes

Each building is composed of a single large block in the middle, and several frame blocks on the outside. The frame blocks are not the issue though. Testing on an empty baseplate, large individual block parts create a similar strange LoD.

BeforeAfter

10 Likes

Interesting, I’d see a lot of usage for this!
:thinking: I guess it’s meant for small models though?

I did a little test here and it went pretty wild.

2 Likes

Hello, I’m interesting in knowing what does Terrain LoD mean. Thank you!

1 Like

It means Terrain Level of Detail (meaning things farther away reduce in quality for performance reasons) but you could have found that out with a search

2 Likes

Question regarding this feature after enabling it on my game. Isn’t this supposed to lower the quality of an asset once it’s outside of the rendering radius? I implemented this on an open world map but everyone is starting to lag due to the fact that any assets that the players load by getting close enough, keep the same quality. Eventually they load almost the entire map so the only difference that I see with this is that the game isn’t laggy right off the bat but gets laggy the more you play and explore the map.

Example:

Before the asset is close enough:

Once it’s in radius:

Finally when you get far away again it stays the same:

Now my map has a bunch of thousand of assets so if that happens to all of them it obviously ends up causing lag. Is this feature meant to work like this or some kind of bug?

2 Likes

Got your point. Even a model is completely streamed in your local device, to improve rendering performance, you prefer to see the model in lower quality once it moves outside a rendering radius.

3 Likes

How should this work ??? I don’t get it :frowning:

Studio:

!

Testing in Studio:

1 Like

Click workspace > Go to properties: image > Scroll down till you find this: image
Then just play around with the MinRadius and TargetRadius till you get the result you want!

4 Likes

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.