Gaussian Splat orientation mismatch (quaternion vs. on-screen result)

Hello,

I’m having trouble matching a splat’s expected orientation (quaternion) with what I see on screen. Looking at
packages/dev/core/src/Meshes/GaussianSplatting/gaussianSplattingMesh.ts
it appears BabylonJS expects the quaternion’s w to be negated and the position’s y to be flipped. I’m doing both in this Playground (see lines 29 and 51):

If I set the rotation to zero (line 85), the result matches my expectations. However, as soon as I introduce a rotation, my axes are rotated differently from the splat.

Can someone tell what I am doing wrong in my code that computes and displays axis? How can I match Babylon’s 3DGS rendering?

(context: I want to understand how Babylon renders splats, so I can use BabylonJS to implement my 3DGS brush-based editing tool)

Thank you,
David

cc @Cedric (please be patient, he is speaking at Siggraph :))

1 Like

I found the problem. It turns out that I had an error in initialization of splat’s orientation

3 Likes