Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Unexpected color shifting tint in latest Supersplat (1.11.2) #338

Closed
tonetechnician opened this issue Dec 13, 2024 · 11 comments · Fixed by playcanvas/engine#7193 or #339
Closed

Unexpected color shifting tint in latest Supersplat (1.11.2) #338

tonetechnician opened this issue Dec 13, 2024 · 11 comments · Fixed by playcanvas/engine#7193 or #339

Comments

@tonetechnician
Copy link

Hi there,

I've been picking up a color shift from blue to red in the latest supersplat that I didn't pick up in previous versions i.e (1.9.0).

videoframe_2855

e030949e-d120-4c51-a562-7f403a769f29

image

I've attached an example splat to test with.

test.zip

Not quite sure what could be causing it, but seems consistent but thought I'd report it.

@slimbuck
Copy link
Member

Hi @tonetechnician,

Well first of all it must be said that this happens to be one of the coolest cars ever, well done.

I managed to repro the color tint. It looks like perhaps spherical harmonics related.

Thanks so much for reporting this and providing a repro - I will investigate immediately.

Thanks!

@slimbuck
Copy link
Member

slimbuck commented Dec 13, 2024

I found the issue with the coloring (see here) for details, but also noticed that this model does not compress to compressed.ply format correctly. I've never seen this before and will investigate next.

@tonetechnician
Copy link
Author

Epic! Thanks @slimbuck

Haha, glad you appreciate that car ;)

And I agree, when disabling SH bands I see the issue goes away - thanks for the speedy fix! Hmmm, the compression could be related to me as we are using a homerolled ply exporter. Will also have a look as compression is something we do want!

@slimbuck
Copy link
Member

This ticket is closed, but the fix will be deployed after the next engine release. I may push this fix through quickly, so early next week.

Regarding the compressed.ply export going wrong, it looks like the scene's quaternions are being badly exported. Still investigating.

@slimbuck
Copy link
Member

Ah ok, scale_2 for most splats is -Infinity and we're not handling that correctly during compression (though we obviously render it fine).

My guess is this scene was trained with some sort of 2dgs?

Anyway, I'll also get this fixed on our side.

@tonetechnician
Copy link
Author

Hey @slimbuck

Ah, ok, that would makes sense! Indeed, this is trained with 2DGS, which would explain that case. Should've specified this earlier.

@vincentwoo
Copy link
Contributor

@tonetechnician this is offtopic, but I didn't realize you could render 2dgs output in supersplat- do you have any notes anywhere about (a) how you trained your 2dgs splat and (b) if you need to do anything special to get it compatible with supersplat?

@slimbuck
Copy link
Member

Hi @vincentwoo ,

SuperSplat will add scale_2 at load time if it's missing (2dgs), but it doesn't then remove it on save. I think we have a ticket open for this.

It means 2dgs roughly works in SuperSplat, but just treats the gaussians as very thin 3dgs.

Thanks

@vincentwoo
Copy link
Contributor

thanks!

@slimbuck
Copy link
Member

Please open an issue if there's anything specific you'd like for Supersplat to support 2dgs better. Or even better submit a pr with changes yourself 😛.

@tonetechnician
Copy link
Author

@tonetechnician this is offtopic, but I didn't realize you could render 2dgs output in supersplat- do you have any notes anywhere about (a) how you trained your 2dgs splat and (b) if you need to do anything special to get it compatible with supersplat?

Hey @vincentwoo

This is pretty standard in the nerfstudio gsplat repo.

To train I use --> https://github.com/nerfstudio-project/gsplat/blob/main/examples/simple_trainer_2dgs.py

You can use this with colmap format or write your own parser for the data you are working with.

Then the only thing extra needed is the ability to save ply which you can get from nerfstudio's project

https://github.com/nerfstudio-project/nerfstudio/blob/main/nerfstudio/scripts/exporter.py#L490C7-L490C26

Hope this helps!

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
3 participants