Live data from Hacker News

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

sparkjs.dev

61–70 of 90 posts

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

#61
post #44
post #41

Earlier quoted context omitted.

Thanks! Notice 12MB steak sandwich is the biggest of them all. Rest are Fancier compression methods are coming (e.g SOGS). This is 30MB! https://vincentwoo.com/3d/sutro_tower/

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 are things that can render beautifully photo realistically in a way that would require much, much more complex polygon geometry and texturing and careful sorting and blending of semi-transparent texels. This is one reason why 3DGS has become so popular in scanning and 3D reconstruction.. you just get much better results with smaller file sizes. When 3DGS first appeared, everyone was shocked by how photorealistic you could render things in real time on a mobile device!

But one final thought I want to add: with Spark it's not an either/or. You can have BOTH in the same Three.js scene and they will blend together perfectly via the Z-buffer. So you can scan the world around you and render it with 3DGS, and then insert your hard-edged robot character polygon meshes right into that world, and get the best of both!

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

#62

Earlier quoted context omitted.

If you say 1 pass bucket sorting.. I assume you do sort the buckets as well? I've implemented a radix sort on GPU to sort the splats (every frame).. and I'm not quite happy with performance yet. A radix sort (+ prefix scan) is quite involved with lot's of dedicated hierarchical compute shaders.. I might have to get back to tune it. I might switch to float16s as well, I'm a bit hesitant, as 1 million+ splats, may exce…

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.

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

#63
post #36

Earlier quoted context omitted.

BabylonJS and the OP's own Aframe [1] seem to have similar licenses, similar number of Github stars and forks, although Aframe seems newer and more game / VR focused. How do Babylon, Aframe, Three.js, and PlayCanvas [2] compare from those that have used them? IIUC, PlayCanvas is the most mature, featureful, and performant, but it's commercial. Babylon is the featureful 3D engine, whereas Three.js is fairly raw. Thoug…

Did a test study in BabylonJS, and generally the subset of compatible features is browser specific. The good: 1. Blender plugin for baked mesh animation export to stream asset is cool 2. the procedural texture tricks combined with displacement maps mean making reasonable looking in game ocean/water possible with some tweaking 3. adding 2D sprite swap out for distant objects is trivial (think Paper Mario style) The ba…

Personaly I have been using babylonJs for five years. And I just love it. For me it's so easy to program ( cleanest API I have ever seen) and my 3D runtime is so light, my demos work fine even on my android phone.

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

#64
post #12

Earlier quoted context omitted.

Wow what kind of device do I need to make my own?

The food scans are just photos from a Pixel phone processed with postshot ( https://www.jawset.com/ ) to generate the splats

Out of interest, to what extent do splats recorded in this manner have reliable/measurable dimensions?

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

#70
post #63

Earlier quoted context omitted.

Did a test study in BabylonJS, and generally the subset of compatible features is browser specific. The good: 1. Blender plugin for baked mesh animation export to stream asset is cool 2. the procedural texture tricks combined with displacement maps mean making reasonable looking in game ocean/water possible with some tweaking 3. adding 2D sprite swap out for distant objects is trivial (think Paper Mario style) The ba…

Personaly I have been using babylonJs for five years. And I just love it. For me it's so easy to program ( cleanest API I have ever seen) and my 3D runtime is so light, my demos work fine even on my android phone.

Web browsers add a lot of unnecessary overhead, and require dancing with quarterly changes in policies.

In general, most iOS devices are forced to use/link their proprietary JS vm API implementation. While Babylon makes it easier, it often had features NERF'd by both Apple iOS, and Alphabet Android. In the former case it is driven by a business App walled garden, and in the latter it is device design fragmentation.

I like Babylon in many ways too, but we have to acknowledge the limitations in deployment impacting end users. People often end up patching every update Mozilla/Apple/Microsoft pushes.

Thus, difficult to deploy something unaffected by platform specific codecs, media syncing, and interface hook shenanigans.

This coverage issue is trivial to handle in Unity, GoDot, and Unreal.

The App store people always want their cut, and will find convenient excuses to nudge that policy. It is the price of admission on mobile... YMMV =3

Post reply on HN