Gaussian Splatting ray picking

Hi All,

I’m playing around a bit with GaussianSplattingMeshes (Amazing!!!) and I’d like to implement a business case where I demonstrate the measurement of this kind of 3d content.
So I’m asking what kind of mesh is a gaussian splatting mesh? Can I apply a ray picking strategy as usual (polygonal meshes) or I have to adopt a differrent approach?

Many thanks in advance.

Hi @xipherx
Gaussian Splatting is (roughly) a point cloud. Each point is a screen aligned quad.
It’s not composed of triangles.
Picking a single splat is currently not supported. By it’s point nature, IMHO, it makes more sense to have more broad selection and operators. Like doing quad/circle selection and translation/scale/rotation/deletion on these selected points.

Thank you Cedric, I see a great success of 3D gaussian splatt adoption in infrastructure engineering just because companies spend a lot of money in laser scanners and specialized operators to condut surveys and other lot of many in software to manage cloud points.
3D Gasussian Splatting are based on top of a quite good precision point cloud but with a fantastic anistropy behavior given from splatts that provide them a fantastic aspect so close to reality.
Infrastructure engineering uses point clouds to make measurements so if gaussian splatt meshes were measurable would be fantastic!
Please correct me if I’m wrong: the implementation of gaussian splatt is based on point cloud but the gaussian splatting material renders the ellipsoid for the splatts? So the point has no dimension.
But is there a way to get positions for each point of a gaussian splatt mesh?
With this information, and organizing data with octrees, I’ll be able to identify the closest point of my picking ray…
Could some one give me some hints on where find more information?

I would not use an octree but a binary tree. Each stage would compute the axis and distance along that axis to cut the point cloud in 2 parts that have (almost) same number of points.once you have this process running, it’s easy to get spatial meta data that are really tight: you sort the particle per tree leaf!

a leaf coordinate is the concatenation of all these splits. 0 before split, 1 after split. So, without considering the axis, you may endup with a bucket of points in leaf number 01101010110.
Sort points per bucket address it belongs to.
And per leaf, you only need the first point index and the point count.
You don’t need a big and complex architecture/bvh along the mesh.