Houdini-gsplat — A Sydney VFX Lab Just Bolted Native Gaussian Splats Into Solaris, MIT Licensed

Gaussian Splatting in Houdini used to mean one thing: dump your PLY through GSOPs, instance it in SOPs, write a .bgeo, hope Karma doesn’t choke. On May 15, 2026, an indie Sydney studio called Plattipus dropped a quiet bomb on that workflow — a fully native, MIT-licensed plugin that introduces 3DGS as a first-class USD primitive inside Houdini 21 Solaris. No disk writes. No Python. No external viewers. Just splats living in your LOP graph like they belong there.

The Story

Plattipus is two years old. Founded in Sydney in 2024, it calls itself a “Research and Production Lab” — meaning they take real VFX jobs, hit a wall, build the missing tool, then open-source it. That’s the whole pitch on their site. No VC narrative, no waitlist, no Series A. Just code and a GitHub.

The wall they hit this time: Houdini 21’s Solaris is built on OpenUSD, which now officially supports Gaussian Splatting as of the 3DGS schema ratification in April 2026. But supporting the schema on paper and actually rendering it in the viewport are two different things. SideFX hasn’t shipped a Hydra delegate for splats. Karma doesn’t know what to do with them. Until last week, the only way to see your splat in Solaris was to convert it to points and pretend.

Plattipus shipped the whole stack: a codeless USD schema (ParticleField3DGaussianSplat), a UsdImaging adapter, a Hydra render delegate doing real EWA splat rasterization on the CPU, and three LOP nodes. All in one repo. All MIT. All built on the v26.03 OpenUSD spec that Apple, NVIDIA, Google and Bentley just ratified.

Houdini Solaris LOP network with PLY Import and Gsplat Instancer nodes
The LOP graph: PLY Import feeds a ParticleField3DGaussianSplat prim straight into Solaris, no intermediate caches. Source: Radiance Fields

What’s In The Box

Four plugins, three LOP operators, one CLI. Built from a single CMakeLists.txt, registered independently through USD’s plugin system. The components:

  • ParticleField3DGaussianSplat — codeless USD schema. Splats are now a real prim type. They reference, override, and layer like any USD prim.
  • UsdVolParticleFieldImaging — the adapter that bridges the schema into Hydra’s scene index.
  • HdParticleField — a CPU rasterizer. Parallel depth sort, EWA Jacobian projection, degree 0–3 real spherical harmonics. Multithreaded across all cores.
  • PLY Import LOP — drop in a .ply, get a USD prim. No bgeo round-trip.
  • Gsplat Instancer LOP — N copies of a splat cloud with O(M + N) memory instead of O(N × M). That’s the difference between instancing 200 trees and crashing.
  • Uruk LOP — variant-based Copy-to-Points for UsdGeomPointInstancer scenes. Per-point variant selection.
  • ply2usd — CLI for batch .ply → .usdc/.usda conversion. Pipeline-friendly.

The Hydra delegate appears in the Solaris viewport renderer dropdown as “Particle Field (Gaussian Splat)”. Performance baseline on Plattipus’s bench: Apple M1 Max, 1280×720, 123,591 splats — CPU-only. They’re honest about the ceiling: comfortable up to ~500k splats. No Metal, no CUDA, yet.

Why You Should Care

Three reasons.

One. This is the first plugin treating splats as a USD-native primitive, not a hack. That means your splat composes with the rest of your USD stage. Layers, variants, references, instances — everything USD gives you for meshes now works for splats. You can sub-layer a captured environment, override its transform per shot, instance it across a city, and the Solaris graph never has to lie about what it’s looking at.

Two. It’s MIT licensed and open source. Two stars on GitHub at time of writing. That number is going to move. Compare to GSOPs, which is also fantastic but lives in SOPs — Plattipus is the first to hit LOPs/Solaris, which is where modern Houdini pipelines actually ship from.

Three. The O(M+N) instancer is the sleeper feature. Instancing was the place where every previous splat-in-Houdini workflow fell over — duplicating a million-point cloud N times eats memory like it owes it money. Plattipus’s instancer writes gsplat:instanceTransforms as a primvar on the prototype prim, so the cloud lives once and the transforms multiply. That’s how you splat-instance a forest, a crowd, a city block.

Solaris viewport rendering Gaussian Splats with the new Particle Field renderer
The new viewport renderer entry: “Particle Field (Gaussian Splat).” Source: Radiance Fields

Try It / Follow Them

IK3D Lab Take

This is the kind of release that gets ignored by the AI hype cycle and then quietly becomes infrastructure. Five years from now, when Solaris ships native splat support, the SideFX implementation will look an awful lot like Plattipus’s because they did it first, did it right, and gave it away.

The interesting tell is that they built on the just-ratified OpenUSD 3DGS schema — not a homebrew format, not a private extension. They’re betting the whole house on the open standard, which means everyone else who builds against the same schema (NVIDIA, Apple, Cesium, Esri, Bentley) just got a reference implementation of how to wire it into a DCC.

The thing to watch is the GPU port. Right now it’s CPU-only, ~500k splats comfortable. The moment someone (probably Plattipus themselves, probably with a Metal compute backend) bolts in a GPU rasterizer, you go from “interesting toy for previz” to “this is how every Solaris pipeline ingests photogrammetry from now on.” The plumbing is already there. The plumbing is the hard part. The plumbing is now open source.

Sharing is caring!

Leave a Reply

Your email address will not be published. Required fields are marked *