Splat Forge is an addon for using Gaussian Splats (3DGS) natively in Blender. It directly implements these in GLSL, giving native performance. This way your scene can easily handle millions of splats in realtime! It is compatible with both EEVEE and Cycles.
Watch the demo video here: YouTube Splat Forge Demo
Video Tutorial: https://youtu.be/h0C-8AtYZuM
Blender should automatically activate it and you will see a new tab in side panel (press N).
.splat
and .ply
(not .compressed.ply
but that’s coming soon!)Shift + A
→ Gaussian Splat
Load Gaussian Splat
Shift + D
Disable in Viewports
and Disable in Renders
will also only work on the object directlySplatForge supports 3 different visualization modes. These can also be rendered out.
Gaussian Viz: Proper visualization of the gaussian splats
Depth Viz:
Surfel Viz: Shows all Gaussian splats as elliptical surfels with their original orientation.
SplatForge supports spherical harmonics up to degree 3. You can change the rendering of the entire scene with the SH Degree dropdown. This can be useful if you want to get rid of reconstructed reflections that are camera angle dependent.
Due to how Gaussian splats are rendered, they need to be sorted or they will look “wrong”. This sorting/updating is expensive but required for accurate visualization. You can adjust the sensitivity of how often this happens.
Due to Blender’s Python API limits, Gaussian splat rasterization cannot be directly integrated into the Blender render/composite workflow (F12). Fortunately, there are easy workarounds.
If your scene only consists of Gaussian splats, then you can directly animate your Gaussian splats/camera and render them either with Render Frame
or Animation
in the Render Gaussians
section of the SplatForge tab. In this case, you can turn off external depth and external color composite.
The output path of the render is taken from Blender’s Output
Tab in the
Properties
Panel. The same you would adjust when outputting regular renders.
SplatForge will always output the color images into the folder Your/Path/From/The/Settings/sf_color
. It will also output metric scene depth into sf_depth
.
SplatForge needs to know what the Blender scene looks like when creating the Gaussian splat frame. Many modifiers, Geo Nodes, and textures/shaders will affect an object’s geometry. Therefore, SplatForge needs to know the final render shape of the scene not just the viewport representation. For accurate interactions, we need to export this in the form of the Z-Pass
before we can render the Gaussian splats.
To do this, go in the Properties
Panel to View Layer
and turn on
Z
in Passes -> Data.
Then go to the Compositing Workspace
, Use Nodes
and add a File Output
node to the Depth
of the Render Layers
Node. Select the File Output
Node and go into the node’s settings. There, change the base path to your desired location and the file format to OpenEXR
(other file formats will corrupt the depth).
Now you can render your Blender scene as you are used to (e.g., with F12/Ctrl+F12) and Blender will output the Color/Combined Frames as well as the depth.
After the render is finished, go into Blender again and this time, in the SplatForge render settings, turn on Use External Depth
and Use External Color Composite
. If you rendered an animation, also tick the Is Image Sequence
checkbox.
Set the two paths to where you rendered your Blender scene depth (path you set in the File Output
) and Blender scene color (path you previously set in Output
). You can now hit the
Render Frame
or Animation
button. SplatForge will render to the location set in Output
, so you may want to change it before rendering the Gaussian splats.
Note: Open the console before rendering to see an estimate of how long rendering the Gaussians will take and the current progress.
SplatForge will create a folder called sf_composite
, which contains your rendered out Blender scene combined with Gaussian splats.
Note: Use Frame Offset
to use a different numbered image than the current frame number.
In the above scenario, we let SplatForge do the compositing for us while it was rendering the scene. There are use cases (e.g., color correction, adding camera effects like haze or similar) where you want to do the compositing yourself, either in external programs or Blender.
In this case, we still need to give SplatForge the depth (Use External Depth
) but not the color. To get the depth, follow the instructions from Rendering with Blender objects
If you want to composite in Blender, a typical setup looks like this
Here we don’t actually need to be in the blend file of the original scene since we are using Blender just for compositing images.
If you want to work with an animation you can also use
Movie Clip
Nodes as input. The depth images from the Blender render and the Gaussian Splat rasterization are only needed in advanced compositing cases.
Fixes are on their way!
As the Gaussian objects “live” in the GPU VRAM, certain modifications will trigger auto-reloading.
The shown Gaussian splat model in some of the screenshots is licensed under CC-BY-4.0 https://creativecommons.org/licenses/by/4.0 https://poly.cam/capture/0151341b-647f-4d29-884c-a21566bd4312