Occlusion between multiple gaussian splatting meshes

Hello,

We’re encountering an issue when rendering multiple GaussianSplattingMesh objects in the same scene. There appears to be unintended occlusion between the meshes.

You can reproduce the problem using the provided playground.

In local, enabling needDepthPrepass on the material seems to eliminate the occlusion artifact, but it also negatively affects the visual result. This might help point toward the root cause or a potential solution.

Thanks :slight_smile:

Hi @lsalteia

This is not an issue, it’s by design. GS mesh are treated individualy and rendered back to front. So, depending on the center of each GS, parrot is rendered before or after the scene and completely overdrawn.

To mix different GS, you’ll have to use GS Parts. See this doc for more infos : Babylon.js docs

4 Likes

Ah, parts… very nice.

.. or join them to a single splat with external editor. (of course :slight_smile: )

2 Likes

It is possible to combine multiple Gaussian Splatting assets into a single scene while maintaining a global splat sorting order.

Wow, we created this playground using the doc, the same one that has the solution just below :sweat_smile:

It works great, I fixed the playground and played a bit with the rotation part: https://playground.babylonjs.com/#M05L0C#45

I guess doing addPart also initialized, or the GaussianSplattingPartProxyMesh by default has, a rotationQuaternion ; because using rotation.x did nothing (not an issue at all, on the contrary).

Thanks a ton <3

2 Likes