mkkellogg / GaussianSplats3D

Three.js-based implementation of 3D Gaussian splatting
MIT License
1.54k stars 199 forks source link

Progressive Loading for Multiple Splatscenes (viewer.addSplatScenes) #316

Open JohannesKrueger opened 3 months ago

JohannesKrueger commented 3 months ago

Hello, to begin: Great work!

Will there be a way in the future to be able to use the progressive loading feature on multiple scenes?

I would like to visualize a large number of splat scenes in my project. Unfortunately, the high number of splats leads to very long loading times. Is there perhaps an approach to visualize the first scene first and then the other scenes when it has finished loading?

The ideal solution would be to be able to make a targeted decision: Now splat scene 1 is loaded, then splat scene 2, etc.

Would such an implementation be possible? This would definitely be great to combine with Viewer.removeSplatScenes()

Many thanks in advance!

mkkellogg commented 2 months ago

Sorry for the late response -- I would love to add progressive loading to addSplatScenes(), but it actually would require very significant changes to much of the rendering pipeline as none of it was originally built it to handle progressive loading. Maybe someday I will refactor and/or redesign that portion of the viewer, but it will be a ways off in the future if I do.

JohannesKrueger commented 2 months ago

Hello, thank you very much for the answer. I can totally understand that. Is there currently the possibility or an implementation approach within the viewer to load several scenes one after the other (without progressive loading)? Instead of loading all scenes directly, as is currently the case.

mkkellogg commented 2 months ago

You could sequentially load multiple scenes, but whenever when you load a new scene, it does a complete rebuild of the splat mesh and splat tree, so there is a significant period of time when the viewer can't render. I'm not entirely sure about your use case(s) or what you want your UX to be like, but I'm guessing that wouldn't be ideal?

newguy123-creator commented 1 month ago

We're facing a simlar issue. Out thinking is that we would load the largest scene 1st, which could be the main environment. Then we could add bits to it, like a playground, or gym equipment, or a car, table, building or whatever after the fact. That way the user can visually see each splat coming in one after another, instead of sitting staring at a blank screen for an extended perioud of time.