as a more broader question, what is the plan for Gaussian Splatting in Babylon for the (close) future.
We have been developing a prototype of a project for quite a while now with BBL.
Just recently we discovered (when implementing low resolution GSs), that the implementation of GS is decently different to other viewers and (atm) lags of visual quality (I guess its the compression?)
Is there a motivation to further develop the GS implementation and also bring in/improve different features?
Sound great, cedric.
Atm we are confronted to get better visual quality from the splats using a consistent workflow from creating to presenting. ( I think I already flagged that, and I got some replies in a different thread).( GS color/detail differences in different viewers - #5 by Cedric )
If there would be options regarding the compression (even the .ply files look kind of lossy) and the splat formats in re of filesize and perfomance.
We were working with .spz which gave good filesizes and decent visuals when using high amount of splats (which counters the filesize and FPS of course).
SOG would be great as it seems the best option atm quality-size-performance.
In fact we discovered that visual quality issue, while we are now versioning (desktop/mobile) and using higres/lowres/very lowres versions of the GS data.
The compression/quantization seems to show up pretty heavily in a low amount splat, which doesnt seem to be a big issue with a lot of data (which of course is controversial to the data/filesizes).
Which plans do you have?
We are serioulsy considering other alternatives for that particular project (which is a pitty as we have put in quite a lot of time into BBL and this as a core demand would be a main decider).
In fact, we are using more than just GS features in the project, so we put in work in developing all of the other features. (custom shader et.al), so we would really want to stick to BBL.
Is there a particular GS roadmap, etas etc. I could plan onto?
We are basically starting production right now and have a 2 months production phase, for the delivery in December.
If there is a promising outlook onto the improvements for the GS, we could just keep going with the project and swap then the GSs with the improved/different formats (e.g.).
Well the first visual differences are obvious, but maybe we do something very wrong>
Thats an uncompressed .ply file (screenshot).
Same experience. Not too much visual differences at high GS count.
I sent u an PM!
SOG was a lucky try. It meets the same visuals as ply or spz (in other than BBL) but filesize is smaller than ply. So that is a good alternative to spz. we would evaluate as long as there are no (major) visual differences.
So basically the core of the issue is the visual difference. If thats out of the way, then we can think of spz or sog or ply (formats for different versions).
It would be great to find the source of that and why it is so different.
I do trust mainly my eyes and I am confident to say, that there is something, lets say not equal in the (visual) comaprison above.
The data set is the same and there are 3 (as supersplat using PC) different visualizer. 2(3) look the same one is obviously different.
So why is that, where is the source of that diffference coming from, and how and if it is fixable.
I take the first dataset ( this is the set which comes out of Postshot) as the reference.
I even did a test with brush, and it looks basically as the postshot output (it cannot be compared when i would compared it from further back - the colmap data aka sparse point cloud and cameras as the algorithm for generating the splat has different parameters).
But even in brush if I import the ply while …. > look at the screenshot, its the same as the others.
We suspect that there must be a difference in how the splats are decoded?
Is it the color? Is there some different compression happening? Rotations or SHs?
You do know more about that I assume, and we wanna find that difference and see if that can be fixed
Wow too cool, Cedric.
Actually unconcioulsy I meant the SOG not the SOGS (lol about the naming), as we were testing PC and the compression tool as well their player (and the engine).
As far as I understood, SOGS technique does require a specific trainig (?).
So we did a quick test with the SOG and that was quite successful.
But we would be soo happy not to switch engine because of that single feature.
If that is possible and we can get the same visuals, then thats literally a project savior!
I’m Helmut and I am working with Werner together on this project.
First of all thank you for working on Babylon. It is a pleasure to work with it, it is very intuitive and in many aspects it meets the sweet spot in abstraction and usability for us (I am a big fan of the PBRCustomMaterial).
As Werner mentioned we are also chasing a rendering quality issue of PLY files (please see the GScompare1 image). The left hand side image shows the 100k PLY file rendered in Babylon. The most visible difference is in the sand around the shoe (in comparison to the other viewers). With higher splat count density there is no visible difference in the viewers anymore.
We are considering using a similar low splat count (and density) for our mobile devices version (for performance reasons mainly) - so the rendering issue might become problematic for us.
When we render the 100k PLY with the pure WebGL implementation from GitHub - kishimisu/Gaussian-Splatting-WebGL: 3D Gaussian Splatting Renderer for WebGL (we have used that internally for testing some things with the shaders), the sand looks as it should. Now the thing is that the pure WebGL viewer doesn’t use any compression/quantization at all, everything is 32 bit floating point.
Therefore my guess would be that it is coming from some sort of quantization, which is also applied to the data from the PLY file. I have spotted two sources, but I don’t know if they are relevant, if the code is indeed executed.
(On a side node, we also tried to render the splat into a 16bit offscreen texture and indeed one can notice a tiny difference but it doesn’t fix the rendering issue.)
Depending on the format, there is quantization. And for a same format like spz, quantization depends on the file format version. SPZ in v3 format has better rotation quantization precision.
There is no compression without quantization at some points. Compressing .ply to .zip is the only way (AFAIK) to get a smaller file without losing precision.
SPZ quantizes pretty much everything: 24bits for position component, 8bits exponential per scale component. 10bits per quaternion component for v3 …
SOG(S) is quantized as well with 16bits per position component for example. It may sound low but in practice, it seems enough. I have no doubts that comparing it to uncompressed .PLY might give visible artifacts.
Every format I’ve seen use 8bits precision for alpha. It’s a very important data for visual quality, so better not touch it. But same as others, there will be a difference with uncompressed float.
Covariances values are converted to half-float (16bits floats) when stored into a GPU texture.
At the end, it will be like .jpg: what is the acceptable loss that is not visible enough for a file size ratio. I’m sure it’s possible to slightly increase rendering fidelity with tweaks here in there in the engine but there will always be some loss compared to raw .ply.