Gaussian Splatting seems to not work since version 8

Hello,

I’m observing a strange behaviour of the engine in rendering gaussian splatting models.
It seems that the shader can’t align the splatts with the camera position.
Here the test 3d model with version 7:

Here the same model with version 8.3

many thanks!

@Cedric is the best person to help here - but he is out for a few days so please expect some delay

@xipherx can you please share the model in the meantime? it will help cedric debug

1 Like

I am having very similar issues — here is a breakdown of the current state of things – all in version 8.3.1 (also the same in 8.2)

These are all the same model in different formats. Created in postshot, exported as a ply.

1 - Compressed PLY does not seem to be functional at all, this is a ply file from postshot converted to a compressed ply in supersplat - https://playground.babylonjs.com/#KUHXDT#13

2 - .SPZ looks great and the harmonics are correct when using webGL only - https://playground.babylonjs.com/#KUHXDT#8. webGPU is all broken looking - https://playground.babylonjs.com/#KUHXDT#7

3 - PLY is broken in the latest version - it looks bad and it is inverted from the way it was in prior versions. Seems like we are trying to bring sphereical harmonics support to plys (great!) -
v8.3 - https://playground.babylonjs.com/#KUHXDT#14
v7.54 - https://playground.babylonjs.com/#KUHXDT#15

The new orientation for ply seems to match the orientation of .spz files - while the old version of ply without harmonics has the same orientation as .splat files.

4 - .splat files look fine and the same as they did before -https://playground.babylonjs.com/#KUHXDT#16

The new orientation is coming into the scene by default inverted, which is fine since we can fix that by inverting scale, but it would be great to be able to unify this behavior across all file types, harmonics or not and have them always face up.

@Cedric I know you are off so take your time, I just wanted to get all of my thoughts down in one place and give this info to you ASAP. I will continue to update this thread if I find any new info and put it in an update below.

Here is another thread I started on this issue - Bug with WebGPU rendering some .SPZ files - #2 by Evgeni_Popov

2 Likes

I’m back I’ll take take of this asap!

2 Likes

Thanks! I am here for any testing you might need or if I can help any other way just let me know!

1 Like
  1. I’ve found the issue. I need to add a new code path for compressed ply and SH.
  2. I didn’t find yet why it does that. still under investigation
  3. this is an issue idk how to fix. at least for most users.
  4. cool!

I should have more infos tomorrow about webgpu and the compressed ply thing.

1 Like

A fix for 1. is

Doing my best to get a fix for 2 ASAP.

No ETA for 3. yet

Please @SonnyC56 do some tests. I may have missed some subtilities with SH :slight_smile:

@Cedric Thanks! Yes I will do some in depth testing today. Just seeing this!

For #3, the inversion is not the biggest problem it’s the weirdness going on in the screenshots at the top of this thread. I’m auto converting ply to spz on upload now so it’s not a huge deal but something is definitely wrong and for power users who want to force ply, things are broken

weirdness should be fixed with Fix rotation values in GaussianSplattingMesh to use negative values f… by takeru · Pull Request #16521 · BabylonJS/Babylon.js · GitHub

1 Like

Awesome :blush:. I will report back today with test results.

Let me know if there is anything in specific for #2 I can help with testing, do you know if it is across all filetypes or just limited to .spz?

It’s related to SH + WebGPU : I get the same issue with PLY+SH

1 Like

I’ve just found the (dumb) bug and a fix for it. It’s pushed!

Awesome, testing now.

Okay – Results (tested in the playground staging environment)

1 - fixed!
2 - this seems to be fixed too, webGPU looks great (same as webGL)
3 - Fixed, plys look the same as spz to me

side note: I corrupted the dragon spz file by mistake at some point but that is fixed now so the playground above work again.

All seems good to go! Thanks so much!

1 Like

Do think we can get an 8.4.1 build for this? @Cedric

It will be live this Thursday unless you need an urgent update?

I am currently waiting on this to push an update to StorySplat. Compressed ply support is very nice and smooths out some issues on my end when passing things to the supersplat editor, so once this was fixed I decided to convert to compressed ply instead of spz by default. Other changes are coming out with this update and will be held up, so I would like to get it out ASAP.

I was trying to figure out the best way to pull in the latest changes from master without a release, and also have these deploy to production – what is the preferred method of doing that? I have never had to do something like that before, and it might be valuable in the future.

Anyway, if it’s not a problem or a pain at all to release a small update, that would be fantastic. But also very willing to learn how to do this myself temporarily until Thursday.

cc @RaananW who is our build master. He can trigger that update for you :slight_smile:

1 Like

You can pull the repository and use npm link after running the full es6 build command (npm run build:es6). Afterwards you can test the latest changes locally.

We can also release a new patch later today (8.4.1). Especially if that bug was fixed. I’ll do it very soon :slight_smile:

1 Like