GaussianSplats3D icon indicating copy to clipboard operation
GaussianSplats3D copied to clipboard

Feature: Support large scenes and large file sizes

Open xiasun opened this issue 1 year ago • 6 comments

There is a 2GB size limitation for JavaScript strings. Will there be any support for handling large files in JavaScript, such as file partitioning or other techniques?

Thanks!

xiasun avatar Dec 18 '23 06:12 xiasun

Supporting larger scenes and larger data files is definitely something that is on the roadmap. I'm still thinking about how exactly I want to do it, but in some form it will mean breaking up large scenes into multiple files.

mkkellogg avatar Dec 18 '23 20:12 mkkellogg

Hi Mark, thanks for your great work! Is there any exact time the large scene feature be released?

FeiWang1001 avatar Mar 11 '24 03:03 FeiWang1001

Unfortunately I don't have a specific timeline for this feature because I'm not sure how much work will be involved and I'm not even sure what the best approach is for implementing it :) Do you have some example scenes that you are hoping to be able to view?

mkkellogg avatar Mar 11 '24 16:03 mkkellogg

https://docs.gsplat.studio/main/examples/large_scale.html

Here is an example where they render large scale scenes. Perhaps this is something you could get an inspiration from? :) Newly released with Gsplat 1.0 which is supported by Nerfstudio. @mkkellogg

abrahamezzeddine avatar Jun 09 '24 09:06 abrahamezzeddine

That update is impressive, but the entire splat dataset still has to be in memory in order to be rendered, which is a significant limiting factor. The trick they employ is to simply ignore gaussians that when projected are too small, which definitely speeds up rendering, and might be worth considering for this library as a general performance enhancement. But web browsers already struggle to sort & render scenes that are in the 6 million splat range, and going beyond that causes out of memory crashes fairly frequently.

What is needed to support very large scenes in the browser is a streaming, LOD-based approach. I'm particularly excited about this project: https://repo-sam.inria.fr/fungraph/hierarchical-3d-gaussians, and am looking forward to when the code is made available.

mkkellogg avatar Jun 13 '24 01:06 mkkellogg

@mkkellogg

The trick they employ is to simply ignore gaussians that when projected are too small, which definitely speeds up rendering, and might be worth considering for this library as a general performance enhancement.

Is this implemented in 0.4.3? If not, can you give me pointers on how I can do this?

Also the code for hierarchical 3d gaussians is made available recently :)

rusty-tendrils avatar Aug 08 '24 14:08 rusty-tendrils

https://github.com/zhaofuq/LOD-Web-Viewer?tab=readme-ov-file Does this implementation help you The ability to load data using Potrees is combined with your rendering implementation

lwaier avatar Jan 10 '25 07:01 lwaier

@lwaier Looking at that repo, it still appears that the whole splat/pointcloud is put into memory. I have opened the issue: https://github.com/zhaofuq/LOD-Web-Viewer/issues/3

timodwhit avatar Feb 12 '25 15:02 timodwhit