Kevin Kwok commited on
Commit
1973aad
1 Parent(s): 1e16b28

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +35 -1
README.md CHANGED
@@ -1,5 +1,39 @@
1
  # splat
2
- WebGL 3D Gaussian Splat Viewer
 
 
 
3
 
4
  https://github.com/antimatter15/splat/assets/30054/6534558e-5ddd-4ca5-a4ba-48d7b7c72af2
5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # splat
2
+
3
+ This is a WebGL implementation of a real-time renderer for [3D Gaussian Splatting for Real-Time Radiance Field Rendering](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/), a recently developed technique for taking a set of pictures and generating a photorealistic navigable 3D scene out of it. As it is essentially an extension of rendering point clouds, rendering scenes generated with this technique can be done very efficiently on ordinary graphics hardware- unlike prior comparable techniques such as NeRFs.
4
+
5
+ You can [try it out here](https://antimatter15.com/splat/).
6
 
7
  https://github.com/antimatter15/splat/assets/30054/6534558e-5ddd-4ca5-a4ba-48d7b7c72af2
8
 
9
+ ## controls
10
+
11
+ - left and right arrows to rotate left and right
12
+ - up and down to move forward and back
13
+ - space to jump
14
+ - w/s to tilt camera up/down
15
+ - a/d to strafe left and right
16
+ - q/e to tilt camera left/right
17
+ - drag left/right with mouse to rotate left and right
18
+ - drag up/down with mouse to move forward and back
19
+ - right click and drag to move up/down and left/right
20
+ - press 0-9 to switch to one of the pre-loaded camera views
21
+
22
+ ## other features
23
+
24
+ - press `v` to save the current view coordinates to the url
25
+ - open custom `.splat` files by adding a `url` param to a CORS-enabled URL (like [this](https://antimatter15.com/splat/?url=plush.splat#[0.95,0.19,-0.23,0,-0.16,0.98,0.12,0,0.24,-0.08,0.97,0,-0.33,-1.52,1.53,1]))
26
+ - drag and drop a `.ply` file which has been processed with the 3d gaussian splatting software onto the page and it will automatically convert the file to the `.splat` format
27
+
28
+
29
+ ## notes
30
+
31
+ - written in javascript with webgl 1.0 with no external dependencies, you can just hit view source and read the unminified code. webgl 2.0 doesn't really add any new features that aren't possible with webgl 1.0 with extensions. webgpu is apparently nice but still not very well supported outside of chromium.
32
+ - we sorts splats by a combination of size and opacity and supports progressive loading so you can see and interact with the model without having all the splats loaded.
33
+ - does not currently support view dependent shading effects with spherical harmonics, this is primarily done to reduce the file size of the splat format so it can be loaded easily into web browsers. For third-order spherical harmonics we need 48 coefficients which is nearly 200 bytes per splat!
34
+ - splat sorting is done asynchronously on the cpu in a webworker. it might be interesting to investigate performing the sort on the gpu with an implementation of bitonic or radix sorting, but it seems plausible to me that it'd be better to let the gpu focus rather than splitting its time between rendering and sorting.
35
+
36
+
37
+ ## acknowledgements
38
+
39
+ Thanks to Otavio Good for discussions on different approaches for [order independent transparency](https://en.wikipedia.org/wiki/Order-independent_transparency), Mikola Lysenko for [regl](http://regl.party/) and also for helpful advice about webgl and webgpu, Ethan Weber for discussions about how NeRFs work, Gray Crawford for identifying issues with color rendering and camera controls, Anna Brewer for help with implementing animations, and GPT-4 for writing all the WebGL boilerplate.