Gaussian splatting to mesh
Gaussian splatting to mesh, offline on your own PC
Gaussian splatting to mesh in Neurones 3D takes one of two routes, both offline on your own Windows PC: export the splat capture straight to a three-level glTF chain for a game engine, or convert it to a point cloud and mesh that with screened Poisson, the clean mesher or one flat polygon per planar segment. Nothing is uploaded.
By Dr. Florent Poux, 3D Geodata Academy · Updated

At a glance
Short statements, each one checkable. Where there is a number, it was measured, and the guides say on what.
- N3D opens splat captures as PLY (INRIA convention, told apart from a plain cloud on load) and SPZ (Niantic).
- File › Export splats for a game engine… meshes the splats at three resolutions and writes
_LOD0.glb,_LOD1.glband_LOD2.glb. - Convert to point cloud samples the splats’ surfaces as oriented discs: 5 million points by default, anywhere from 0.2 to 50 million, with floaters and noise removed.
- Screened Poisson gives a smooth, watertight surface from at most 800,000 points, at four fidelities (depth 6 to 9).
- The clean mesher gives a closed solid, or a single-sided surface with Open scan, with a texture baked from the cloud into an 8K atlas.
- The clean mesh is closed, not edge-manifold, and its audit says so: 501 non-manifold edges on a 20,000-point sphere, 2,431 on a real indoor scan.
- Meshes are written as glTF / GLB or a USD stage. OBJ is read-only, and there is no decimation and no manifold repair.
- It runs offline, with no upload and no account. Meshing is free; writing the mesh out needs a paid edition, bought once, with no subscription.
How a splat capture becomes a mesh
Two routes from splats to a mesh
A splat capture is not a surface a CAD tool or a game engine can open. N3D gets it there in one of two ways, and the choice depends on who receives the result.
| Route | Menu | What comes out |
|---|---|---|
| Level-of-detail chain | File › Export splats for a game engine… | three glTF files, _LOD0 to _LOD2 |
| Poisson | Convert to point cloud, then Process › Surface mesh (Poisson)… | a smooth, watertight surface |
| Clean mesh | Convert to point cloud, then Process › Mesh (clean)… | a closed solid or a single-sided surface, textured |
| Segment meshes | Convert, segment, then Process › Mesh Segments | one flat polygon per planar segment |
Every route runs on your machine. Viewing, converting and meshing are free; writing the glTF chain, a glTF / GLB mesh or a USD stage out needs a paid edition.
The direct route: a glTF level-of-detail chain
For a game engine, File › Export splats for a game engine… meshes the splats at three
resolutions and writes _LOD0.glb, _LOD1.glb and _LOD2.glb beside each other, so the engine
can swap between them with distance. It is the shortest path from a capture to something a
real-time scene can load, and it needs no intermediate point cloud.
Through a point cloud: Poisson, clean or segment meshes
When the mesh has to be controlled, go through points. Process › Convert to point cloud… samples the splats’ surfaces as oriented discs, 5 million points by default and up to 50 million, with Remove floaters & noise on. Converting replaces what is loaded, so save the project first if you will want the splats back.
From the converted cloud, Surface mesh (Poisson)… reconstructs a smooth, watertight surface at Fast, Balanced, High or Extreme fidelity (depth 6 to 9), using at most 800,000 points. Mesh (clean)… builds a closed solid, or with Open scan a single-sided surface for a façade captured from one side, at about 200,000 or 500,000 points, and bakes a texture from the cloud into an 8K atlas. Mesh Segments gives one flat polygon per planar segment, a lightweight model of walls, floors and table tops. The Topology line in Mesh display then reports holes, the largest hole’s area and seams, so you know what the mesh is before it leaves.
Which splat-to-mesh methods can you use commercially?
A licence question sits under every splat-to-mesh workflow. As of September 2026, the splat-to-mesh methods most often found on GitHub, including SuGaR, 2DGS and Gaussian Opacity Fields, are released under Inria’s licence for research and evaluation, according to their repositories’ LICENSE files. That licence does not cover commercial use, so a mesh made with them is not cleared for paid work without a separate agreement. Most commercial splat meshing products, meanwhile, are cloud services, which means uploading the capture.
N3D is a third option: the meshing runs inside the application, offline. Its terms allow a Desktop licence to be used for commercial work, including work for clients, and state that the deliverables you produce are yours. Its dependency graph is mechanically checked for commercial distribution. The academic licence covers non-commercial teaching and research only. None of this is legal advice: whatever tool you use, read its licence before the result is invoiced.
What it does not do
There is no automatic metric scale for a splat capture: a mesh made from one is as large as the capture says, until you rescale the layer by hand in its reposition window. The clean mesher’s surface is closed but not edge-manifold, and nothing repairs it into a manifold. There is no mesh decimation, and OBJ is not written. Closed mode seals unobserved space by flood fill, so a room with an open door is closed across the door; use Open scan when that is wrong. The splat level-of-detail tree is not yet out of core, so a capture larger than video memory cannot be viewed. And N3D does not train splats from photos: it opens, converts, merges and meshes captures made elsewhere.


Questions
How do I convert a Gaussian splat to a mesh?
Open the .ply or .spz with File › Open…. For a game engine, use File › Export splats for a game engine…, which writes three glTF files, _LOD0 to _LOD2. For a mesh you control, use Process › Convert to point cloud… first, then Surface mesh (Poisson)…, Mesh (clean)… or Mesh Segments, and write the result as glTF / GLB or USD.
What does "Export splats for a game engine" produce?
A three-level level-of-detail chain: the splats meshed at three resolutions and written as _LOD0.glb, _LOD1.glb and _LOD2.glb. The same chain is available headless as n3d-render-cli splat-lod --levels 3. Writing it needs a paid edition.
Should I use Poisson or the clean mesher on a splat capture?
Poisson for objects and smooth surfaces; it uses at most 800,000 points, a uniform subset of a larger cloud. The clean mesher for rooms and buildings that need a closed solid, or with Open scan ticked for a façade captured from one side; it bakes a texture from the cloud into an 8K atlas.
Can I mesh Gaussian splats offline, without uploading them?
Yes. Opening, converting, meshing and writing all run on your own Windows PC. There is no upload, no account and no telemetry, and the licence key is checked on the machine.
Can I use meshes from SuGaR, 2DGS or Gaussian Opacity Fields commercially?
As of September 2026, those repositories are published under Inria’s licence for research and evaluation, which does not cover commercial use. Read each repository’s LICENSE file before its output goes into paid work. N3D’s terms let a Desktop licence be used for commercial work, including work for clients, and the deliverables you produce are yours.
Can I export the mesh as OBJ, or simplify it?
No. OBJ is read-only in N3D and meshes are written as glTF / GLB, or as a USD stage. There is no mesh decimation and no manifold repair; the mesh audit reports holes, seams and non-manifold edges instead of claiming them away.
Is a mesh made from splats at real-world scale?
Only if the capture was. There is no automatic metric scale for a splat capture. Rescale it by hand in the layer’s reposition window before meshing if the mesh will be measured.
The guides behind it
Each guide gives the menu path, the steps, the command-line equivalent and the limits.