Live data from Hacker News

Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js

sparkjs.dev

81–90 of 90 posts

Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js

#81

Can I run around with my phone, and capture some Gaussian Splats of... grass... bushes... dirt... And then select one-meter square patches of land... and one-meter cubes of spots with bushes... And then make a "Minecraft-looking" world, repeating the grass block all over the place, with occasional dirt and bushes? I'm guessing I'd need some pretty beefy hardware to render thousands of blocks...

You definitely could prototype something like that. Would be really cool to see.

Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js

#82

Cool work, but I have to say the performance is pretty bad in Firefox on my laptop with an Nvidia RTX A3000 GPU. There are enough shader cores here to cause first degree burns.

With any demo / example in particular?

Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js

#84
post #44

Earlier quoted context omitted.

How much of the huge file size is because you need tons of splats to simulate a hard surface? Conceptually the splats seems flawed because gaussians don't have hard edges - they literally go to infinity in all directions, just at vanishingly small densities. So practically everybody cuts them off at 3 sigma or something, which covers 99.7% of the volume. But real-world objects have hard edges, and splats don't. Would…

It's an interesting idea, and with spark you could test this by adjusting the parameter maxStdDev to control how far out it draws the splat. I agree with you though that in general 3DGS is a worse representation for hard, flat, synthetic things with hard edges. But in the flip side, I would argue it's a better representation for many organic, real-world things, like imagine fur or hair or leaves on a tree... These ar…

Cool - thanks for explaining that. I totally see how each has its place.

I imagine it's pretty complex to take the raw scan data and generate 3dgs. Are these algorithms simple & standard, or do they take a fair amount of tuning & tweaking to do a good job? Adapting these to work well with hard-edge ovals seems like it would take some work, and a lot more work to get them to output a mix of ovals & fuzzy blobs. But if you could do that, I agree the combination would be amazingly expressive.

Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js

#85

What's the difference in this and and .obj render? Does gaussian produce a different format?

obj is traditional geometry (vertices, triangles). gaussian splats is a different way to represent 3D information (simplifying. it's a point cloud where each point it's an ellipsoid with view dependent color)

Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js

#86

Earlier quoted context omitted.

We are purposefully trading off some sorting precision for speed with float16, and for scenes with large Z extents you'd probably get more Z-fighting, so I'm not sure if I'd recommend it for you if your goal is max reconstruction accuracy! But we'll likely add a 2-pass sort (i.e. radix sort with a large base / #buckets) in the future for higher precision (user selectable so you can decide what's more important for yo…

You might want to consider using words (16 bit integer) instead of halfs? Then you can use all the 65k value precision in a range you choose (by remapping 32bit floats to words), potentially adjust it every frame, or with a delay.

Yeah you're right, using float16 gets us 0x7C00 buckets of resolution only. We could explicitly turn it into a log encoding and spread it over 2^16 buckets and get 2x the range there! Other renderers do this dynamic per-frame range adjustment, we could do that too.

Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js

#87
post #84

Earlier quoted context omitted.

It's an interesting idea, and with spark you could test this by adjusting the parameter maxStdDev to control how far out it draws the splat. I agree with you though that in general 3DGS is a worse representation for hard, flat, synthetic things with hard edges. But in the flip side, I would argue it's a better representation for many organic, real-world things, like imagine fur or hair or leaves on a tree... These ar…

Cool - thanks for explaining that. I totally see how each has its place. I imagine it's pretty complex to take the raw scan data and generate 3dgs. Are these algorithms simple & standard, or do they take a fair amount of tuning & tweaking to do a good job? Adapting these to work well with hard-edge ovals seems like it would take some work, and a lot more work to get them to output a mix of ovals & fuzzy blobs. But if…

There are a lot of tools to do this easily today, for free! Take a look at Postshot, or Brush. You can literally take a video with your mobile phone, toss it in Postshot, and a few minutes later you have a photorealistic 3DGS model you can use in Spark!

3DGS is still a rapidly evolving research field, but the "baseline" is pretty much standard these days.

Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js

#88

I'm still highly skeptical of gaussian splatting as anything more than a demo. The files are too large. The steak sandwich is 12meg (as just one example) There was a guassain splat based Matterport port clone at least year's siggraph. To view a 2 bedroom apartment required streaming 1.5gig Cool demo

The SOGS compression technique works well. You can get 1M Gaussians with full spherical harmonics in about 14MB. There's a good article about it on the PlayCanvas blog:

https://blog.playcanvas.com/playcanvas-adopts-sogs-for-20x-3...

Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js

#89
post #75

Earlier quoted context omitted.

One component of my hobby web app project is a wavetable. Below are two examples of wavetables. I want it to not tax the browser so that other, latency sensitive, components do not suffer. Would you have any suggestions on what JS/TS package to use? I built a quick prototype in three.js but I am neither a 3D person nor a web dev, so I would appreciate your advice. Examples: - https://audiolabs-erlangen.de/media/pages…

Personally, I wouldn't try to do DSP pipe code in VM. 1. Use global fixed 16bit 44.1kHz stereo, and raw uncompressed lossless codec (avoids gpu/hardware-codec and sound-card specific quirks) 2. Don't try to sync your audio to the gpu 24fps+ animations ( https://en.wikipedia.org/wiki/Globally_asynchronous_locally_... ). I'd just try to cheat your display by 10Hz polling a non-blocking fifo stream copy. ymmv 3. Try sta…

Thank you!

Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js

#90

PartCAD can export CAD models to Three.js. The OCP CAD viewer extension for build123d and cadquery models, for example, is also built on Three.js. https://github.com/bernhard-42/vscode-ocp-cad-viewer

PartCAD has a library of 3D parts which might be useful for testing a different renderer.

The OCP CAD viewer could optionally use this Gaussian splatting renderer (because it's also already built on Three.js)

Post reply on HN