Streaming asset on UI

Hi, how can we stream a heavy 3D model on UI? I guess buffers and streams can be used in this regard but not sure how and where I can get started. I am looking for something like this: https://youtu.be/3UeTGQmNI80

If you are relying on GLTF/GLB, you might be interested in the msft_lod extension. adding @bghgary if he has any other tricks ?

could you explain me more about msft_lod extension? Please share the relevant links as well.

@bghgary would have way more info to share on this one. He should be able to definitely help on that one :slight_smile:

This isn’t streaming though. These are discrete LODs. We can currently load them progressively.

Hi, as per my understanding, LODs are used considering the distance between the camera and the object to render. In my case, this distance will always be constant.

Also, the addLODLevel() takes distance from the object center as its parameter which would be undefined when I first load my model.

How is the solution suggested by you relevant in my case? Also, could you please provide me the link for working example of the same in babylon (if any)?

Hot off the press: Progressively Load glTF Assets - Babylon.js Documentation :slight_smile:

2 Likes

Thank you for the reply and surely, I am looking for something like this. I ran through the example you shared and I have few queries:

  1. How are you generating various LODs from the single model link? How are you handling this at run time?
  2. Can we generate LODs of a single model from its url at run time? If yes, please provide the relevant links to do that.

I’m not generating LODs at runtime. They are in the model. LODs are created offline as it is a slow operation.

Alright! This answered most of my queries. Thanks :slightly_smiling_face:

Just one more question! Is there any way we can generate LODs at runtime?

1 Like

I don’t understand why that would be useful. The point of progressive LODs is to save on transfer size and thus download time. What are you trying to do?

When we put LODs in the model itself, it increases the model size. And, as per my requirement, I need to reduce model size as much as possible while availing benefits of LODs. That’s why I was looking for a possibility of generating LODs at runtime.

I’m confused as to what you want. Adding LODs will certainly increase the total size of the download, but the user will see the model faster. This is the technique I put in the doc. There are other ways to do this, but there are always going to be trade-offs.

What benefits are you talking about? If the LODs are generated at runtime, the download time benefits are gone since the full model will be downloaded before anything can happen.

I have got all my queries answered now. Thanks! I was willing to know about the trade-offs and I guess that’s very well answered :slight_smile:

1 Like