Does any one have a workflow for bringing a 3D gaussian splat into a threejs scene?
Not yet… I think it’s still just webGL … this is the main implementation I’ve seen:
I’ve thought of trying to port it to threejs. but haven’t dug in too deeply.
that’s awsome @manthrax! There’s a lot of noise but really neat to see the radiance feild inference visualized in js! have been keeping a keen eye on model exports from libs such as… 3D Gaussian Splatting for Real-Time Radiance Field Rendering
Yeaah! It’s pretty cool! I got it running locally too… but I had to scrape his models from my cache, he has URLs in his code to view those other examples like the bicycle/hilltop/garden scene… etc.
that would be awesome!
I’m surprised people aren’t jumping all over this! What do you think it would take to port it?
Yes would be neat! Might not be so complex. Too bad the super cool webgl implementation from https://gsplat.tech/ is not open sourced cause it has been sold (to probably polycam…)
I guess the easiest is to port Antimatter code yes!
There is a working implementation for three.js by Mkkellogg GitHub - mkkellogg/GaussianSplats3D: Three.js-based implementation of the 3D Gaussian splat viewer
The only issue I ran into is that depth testing doesn’t work for other added object3Ds. Maybe anyone with knowledge of this can point me in the right direction to implement this?
Its the same thing as a regular pointcloud in ThreeJS. You need to render your scene with multiple calls. In the first call you render the pointcloud and in the second call you render other objects, but you need to keep the depth buffer results from the first call.
I have been playing with GitHub - mkkellogg/GaussianSplats3D: Three.js-based implementation of the 3D Gaussian splat viewer
And it works really well, the code is clean and performance is not so different than Luma Labs or Polycams implementation.
Do you by chance have an example for this in regular point clouds? I modified the repo code for main mesh to write in depth buffer, but it didn’t produce any result
@makman this looks like what you were looking for?
This is by far the best implementation I have seen. Many performance improvements.