Back in October, we looked at Dylan Ebert's 3DGS viewer, which quickly became a Gaussian Splatting Javascript library, gsplat.js, on Hugging Face. Yesterday, it got a big bump forwards with the release of Update 1.0.
🚄 Fast, real-time editing and intersection testing
🆎 Manipulate and compose scenes
🤗 Now an official Hugging Face project
Code: https://t.co/3Xjz5ZAv3q
Try the editor: https://t.co/s7hJjfQcps pic.twitter.com/WtWy7JApZt— dylan (@dylan_ebert_) December 18, 2023
In a example video, Ebert showcases how easy it is to import multiple Splats into the same scene and edit them with ease.
Here's a larger look at the updates:
Scene Class Overhaul
Object3D Integration: The Scene class has undergone a transformation, now incorporating Object3D objects. This change signifies a more unified and streamlined approach to 3D object management within the library.
Camera and Splat as Object3D Types: Camera and Splat are now subclasses of Object3D. They correspond to CameraData and SplatData, respectively, offering a more coherent structure.
Enhanced SplatData: SplatData has been enriched to include positions, rotations, scales, and colors. These elements were previously part of the scene representation, indicating a more integrated approach to handling splat attributes.
Renderer Enhancements
Simplified WebGLRenderer: The WebGLRenderer is now more user-friendly, featuring a modular list of shader programs. This simplification aids developers in navigating and utilizing the renderer more effectively.
ShaderProgram Class: A new class, ShaderProgram, encapsulates rendering logic, marking a significant advancement in rendering efficiency. This class includes the RenderProgram, dedicated to rendering splats.
DataWorker Introduction: The introduction of DataWorker for asynchronous data packing into a render texture is a game-changer. It facilitates more efficient rendering processes, allowing for smoother graphics and better performance.
Intersection Testing Improvements
IntersectionTester Class: The new IntersectionTester class offers a specialized tool for intersection testing, enhancing the library's capability in managing 3D object interactions.
Optimized SortWorker: The SortWorker now stores a 15x15 screen-space chunk ID for each point. This optimization drastically improves the speed and efficiency of intersection testing.
However, with all of these features, my favorite is still the Undo button. I've spent quite a bit of time editing my captures both on desktop and in VR and there are few things that are more frustrating than deleting a section and realizing that you need to start back again from a previous checkpoint.
Gsplat.js is available both as a Hugging Face Space, as well as on Github.
Ebert has made Gsplat.js entirely open source, with an MIT License. This decision opens the doors for collaborative development, encouraging others to enhance and build upon this groundwork.