mkkellogg / GaussianSplats3D

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

Issue Loading PLY #186

Closed jarodabel closed 5 months ago

jarodabel commented 6 months ago

Question about an inconsistency I am seeing. Curious if this is a bug or maybe a configuration issue on my side.

Consider this ply file https://github.com/playcanvas/engine/blob/48f95514feceaf080db3227c528d2bb660d59513/examples/assets/splats/biker.ply

In this viewer (GaussianSplats3D) it will load upside down. If I load the same file in play canvas super splat it seems to load up right.

Extra information If I compress this file with super splats algorithm, it will load upright in both viewers

GaussianSplats3D image

PlayCanvas SuperSplat image

mkkellogg commented 6 months ago

I'll have to dig into the code to verify, but I'm guessing that PlayCanvas flips the Y axis somehow during the loading of a .ply file but doesn't export that modification, and since I copied the code for loading a compressed .ply from them, my viewer is also doing the same thing, but only for compressed .ply files.

mkkellogg commented 6 months ago

So after digging through PlayCanvas' code, it looks it their editor (SuperSplat) performs a rotation transformation when loading or saving .splat or uncompressed .ply files that it does not apply to compressed .ply files:

https://github.com/playcanvas/super-splat/blob/0c0696a404af9486864ab018b11ca45e40907a92/src/splat-convert.ts#L42 https://github.com/playcanvas/super-splat/blob/0c0696a404af9486864ab018b11ca45e40907a92/src/splat-convert.ts#L455

I think this is why you're seeing the inconsistency.

jarodabel commented 5 months ago

Thank you for looking into this, thats enough for me.