playcanvas / supersplat

3D Gaussian Splat Editor
https://playcanvas.com/supersplat/editor
MIT License
745 stars 76 forks source link

Is it possible to support 2DGS? #117

Closed oUp2Uo closed 1 week ago

oUp2Uo commented 1 week ago

https://github.com/hbb1/2d-gaussian-splatting

2DGS has smaller result file by filtering points and changing scale from 3 float to 2 float. Usually, training using default parameters and the same images, 2DGS would have a result which is half of 3DGS's. And the edge point of the object is more clear than 3DGS.

By manually change the 2DGS ply file to 3DGS ply file (add 3rd scale with small value like 0.00001), supersplat could be used to delete points. But the preview is not correct.

Is it possible to support 2DGS, or where could I change the preview algorithm manually?

Thank you.

2DGS (add 3rd scale): 2dgs 3DGS: 3dgs

slimbuck commented 1 week ago

Hi @oUp2Uo , can you provide an example 2dgs file? Thanks!

oUp2Uo commented 1 week ago

Thanks for the reply.

2DGS ply has almost the same format as 3DGS. The difference is that the header do not have property float scale_2.

Here is one simple example I have trained and then edited as I said. Could not have the correct preview, so the result has many noises.

2024-06-25 191248

point_cloud.zip

slimbuck commented 1 week ago

I tried adding scale_2 with 0's to this model at load time, but it doesn't work.

I created an issue on the original repo here. Perhaps the original authors can help.

slimbuck commented 1 week ago

I'd forgotten PLY stores log(scale). Here is your model in SS with the simple loading change:

Screenshot 2024-06-25 at 12 27 22
slimbuck commented 1 week ago

If you want to do this yourself make sure scale_2 is filled with Math.log(1e-06) or similar.

We could also add support for adding the missing scale_2 on load, but then we'd probably need to remove scale_2 on saving.

oUp2Uo commented 1 week ago

I'd forgotten PLY stores log(scale). Here is your model in SS with the simple loading change:

Screenshot 2024-06-25 at 12 27 22

Wow this is good. I tried to add 0.000000000001 as scale 2, but the result is like the image I gave. After I change to log(0.000001), the result is OK.

Thank you.

Yuhuoo commented 3 days ago

Can you share the modified code? I can see nothing when I test the point cloud ply.

Thanks for the reply.

2DGS ply has almost the same format as 3DGS. The difference is that the header do not have property float scale_2.

Here is one simple example I have trained and then edited as I said. Could not have the correct preview, so the result has many noises.

2024-06-25 191248

point_cloud.zip

image
Yuhuoo commented 3 days ago

I don't understand how to modify the code. Could you help me?

image