GaussianSplats3D icon indicating copy to clipboard operation
GaussianSplats3D copied to clipboard

Feature: Randomly selected fraction of points

Open tom-adsfund opened this issue 1 year ago • 5 comments
trafficstars

As far as I'm aware, splatting uses something like a point cloud. Could we allow the user to set a fraction of the points to be selected randomly for display?

The reason is primarily for speed when editing scenes: render a "simpler" fraction of the points, while manipulating the scene.

But there are obviously more uses, like reducing to a fraction until within a ball of viewer, etc.

tom-adsfund avatar Feb 15 '24 15:02 tom-adsfund

And to do this you can (assuming there are points) shuffle the points, then use the first x%.

tom-adsfund avatar Feb 16 '24 16:02 tom-adsfund

I have also thought about ways of doing this kind of thing -- Another approach might be to include a universal scaling factor for all the gaussians because simply making them smaller when rendering will also boost performance. I will definitely keep thinking about how to best support this capability, hopefully I can get something in an upcoming release.

mkkellogg avatar Feb 19 '24 00:02 mkkellogg

Interesting. Maybe multiple methods can work together.

I just noticed that: the shuffle can be done once, and then the fraction can be changed smoothly (by people using the library) depending on proximity to the viewer or in animations!

tom-adsfund avatar Feb 19 '24 12:02 tom-adsfund

If you're still interested, I recently added a function: SplatMesh.setSplatScale() to set the universal scaling factor for the splats. If you set the scale to be small, you should see a boost in performance. The viewer also has built-in keyboard controls to adjust the scale on-the-fly: - to decrease and = to increase.

mkkellogg avatar Apr 13 '24 18:04 mkkellogg

Yes, I'm very interested. I think splatting will be a major way to get realistic elements in a scene.

The more flexibility we have in controlling the splats the better, because as I've said, there are many proximity (level of detail) optimizations that would be powerful -- especially since unlike a traditional model, there is a possibility to meaningfully take a random sample of the points, and it still work.

tom-adsfund avatar Apr 13 '24 18:04 tom-adsfund

I'm going to close this for now, but eventually I'm going to (hopefully) add a dynamic level-of-detail system. Really I'm just waiting for the code for this project: https://repo-sam.inria.fr/fungraph/hierarchical-3d-gaussians/.

mkkellogg avatar Jun 28 '24 22:06 mkkellogg

Great! Thanks for letting me know. That research looks powerful.

tom-adsfund avatar Jun 29 '24 00:06 tom-adsfund