Gaussian Splat
Load .ply and .splat files, or convert points, a mesh, or a volume into gaussian splats. Splats convert back: wire them into a points input, the Volume node, or the Mesh node.
What it does
Gaussian Splat loads a captured 3D scene, a .ply or .splat file from a photogrammetry or radiance-field capture, as a cloud of soft, blended splats rather than a mesh. Point File Path at a folder of frames instead of a single file and it loads a moving splat sequence that plays over the timeline (see Gaussian splats). Wire something into Source and the node switches to convert mode, building splats from the shape of Points, a Mesh, or a Volume.
The Splats output goes back the other way too: wire it into a Points input, into the Volume node, or into the Mesh node, and each reads the splats into its own form.
When to use it
A
.plyor.splatscan or capture brought in as-isA point cloud given the soft, volumetric look of splats instead of hard dots
A Mesh surface resurfaced as splats, for a painterly or atmospheric look
A Volume's occupied region turned into splats
| Parameter | Type | Default | What it does |
|---|---|---|---|
source | Collection or Field or GPU Geometry | — | Points, Mesh, or Volume to convert into Gaussian splats. When connected, file_path is ignored. Points → covariance fit; Mesh → surface sampling; Volume → per-voxel splats. |
file_path | String | "String::new()" | Path to Gaussian splat file (.ply or .splat). Ignored if a source collection is connected. |
k_neighbors | Number | 16 | K nearest neighbors for covariance estimation when fitting from points |
fit_opacity | Number | 0.800 | Opacity assigned to each fitted splat (convert mode only) |
fit_scale_factor | Number | 1 | Scale multiplier for fitted splat sizes (larger = more overlap) |
mesh_splat_count | Number | 100000 | Target splat count sampled across the mesh surface (mesh convert mode). Reuses Opacity / Splat Scale for per-splat opacity and size. |
density_threshold | Number | 0.500 | Occupancy threshold: voxels with density above this emit a splat (volume convert mode). Reuses Opacity / Splat Scale for per-splat opacity and size. |
position | Vec3 | (0, 0, 0) | Translation offset |
rotation | Vec3 | (0, 0, 0) | Rotation in degrees (Euler XYZ) |
scale | Vec3 | (1, 1, 1) | Per-axis scale factors (X, Y, Z). Anisotropic scale is applied to splat covariance in the project shader, so non-axis-aligned splats stretch correctly. |
sh_degree | String | "Full" | Spherical harmonic degree. Lower = faster. Full = use file's SH degree. One of: Full, Degree 2, Degree 1, Degree 0. |
splat_scale | Number | 1 | Global scale multiplier for splat sizes |
opacity_cull | Number | 0 | Minimum opacity threshold (splats below are culled) |
max_splats | Number | 0 | Maximum splats to render (0 = unlimited) |
Gotchas
Splat Scale and the opacity settings (Fit Opacity, Opacity Cull) apply in every conversion mode, and are the fastest fix for splats that read too big, too faint or too noisy.
Max Splats defaults to unlimited. Converting a dense Volume or a very large Mesh can produce a huge number of splats and slow things down; set a cap once the look is settled.
Wiring anything into Source switches the node fully into convert mode. File Path is ignored from then on, even if it still points at a valid file.
The Fit, Mesh Convert, and Volume Convert parameter groups only matter for the matching input: K Neighbors / Fit Scale Factor only affect converting Points, Mesh Splat Count only affects converting a Mesh, Density Threshold only affects converting a Volume. Setting the wrong group's values for the current Source has no effect.
Worked example
Add a Gaussian Splat node and set File Path to a
.plyor.splatcapture, leaving Source unconnected.To convert something you already have instead, wire a Points, Mesh, or Volume node into Source. File Path is now ignored.
Converting Points: tune K Neighbors, Fit Opacity, and Fit Scale Factor under Fit to shape how the splats are estimated.
Converting a Mesh: set Mesh Splat Count to control how densely the surface is covered.
Converting a Volume: set Density Threshold to control which voxels become splats.
Dial in Splat Scale, Opacity Cull, and Max Splats under Quality, then send Splats onward, including back into a Points input, the Volume node, or the Mesh node for another form.