HOUDINI_USD_GSPLAT — NATIVE 3D GAUSSIAN SPLAT RENDERING IN HOUDINI SOLARIS
An open-source native integration of 3D Gaussian Splatting into Houdini Solaris via a first-class USD schema, UsdImaging adapter, and CPU Hydra render delegate — bringing Gaussian splats into the USD scene graph as proper USD primitives with full Houdini LOP workflows.
Overview
houdini_usd_gsplat is a native open-source integration of 3D Gaussian Splatting into Houdini Solaris. Rather than treating Gaussian splats as a foreign format loaded through a workaround, this project defines splats as first-class USD primitives — complete with a custom USD schema, a UsdImaging adapter, and a Hydra render delegate that performs CPU rasterisation with EWA splatting and spherical harmonics.
The result is a proper USD-native workflow: Gaussian splat .ply captures slot into any Houdini LOP graph, compose with other USD prims, and render through the same Hydra viewport pipeline used by every other primitive type in Solaris.
GitHub: github.com/plattipus/houdini-gsplat
What's Included
ParticleField3DGaussianSplat — USD Schema
A new USD prim schema (ParticleField3DGaussianSplat) that encodes every per-Gaussian attribute directly in the USD scene graph:
- Position, opacity, covariance scale and rotation
- Spherical harmonic coefficients for view-dependent colour
Splats authored against this schema compose, reference, layer, and variant-switch like any other USD primitive.
UsdImaging Adapter
The UsdVolParticleFieldImaging adapter bridges the USD schema to Hydra. It reads ParticleField3DGaussianSplat prims and populates the Hydra render index so any delegate — including the native viewport — can consume them without bespoke format handling.
Hydra Render Delegate — HdParticleField
HdParticleField is a CPU rasteriser built as a Hydra delegate:
- EWA splatting — elliptical weighted average filtering for sharp, alias-free splat edges
- Spherical harmonics — view-dependent colour evaluated per-Gaussian at render time
- Depth-sorted compositing — back-to-front alpha compositing in the Hydra pipeline
PLY Import LOP
A Houdini LOP node (Ply Import) that ingests standard .ply Gaussian splat captures and writes them directly into the USD stage as ParticleField3DGaussianSplat prims. No intermediate conversion step required.
Gsplat Instancer LOP

The Gsplat Instancer LOP enables Gaussian splat instancing at the USD level — place, transform, and scatter splat captures across a scene using standard USD instancing semantics.
Uruk LOP
A specialised LOP for scene composition workflows involving splat-heavy scenes — named for the internal pipeline step that merges environment captures with hero geometry.
ply2usd CLI
A command-line tool that converts any .ply Gaussian splat file to a standalone USD file containing a ParticleField3DGaussianSplat prim. Useful for pre-processing captures outside of Houdini or integrating into existing USD pipeline tooling.
USD Architecture
The key design decision is treating each Gaussian splat capture as a USD primitive, not a viewport overlay or custom drawable. This means:
- Splats participate in USD composition — layering, referencing, variants, payload loading
- Scene assembly in Solaris works identically whether the prim is a mesh, volume, or Gaussian splat
- Downstream tools that speak USD (Karma, USD render delegates, custom Hydra delegates) can address splat prims through the standard imaging API
- Render-time data flow follows the Hydra contract: schema → imaging adapter → render index → delegate
The UsdVolParticleFieldImaging adapter name reflects the early prototyping lineage (Gaussian splats share volumetric compositing characteristics with USD volumes) and is preserved in the release for pipeline compatibility.
Requirements
| Dependency | Version |
|---|---|
| Houdini | 21.0.559 or later |
| CMake | 3.20 or later |
| Platform | macOS ARM64 (Linux RPATH wired, untested) |
License
MIT — open for production use, modification, and redistribution. Contributions welcome via the GitHub repository.