Hugues Bruyère has published Carveout, an open source tool that finds and labels objects inside an already trained 3D Gaussian Splatting scene.
Carveout reads a trained .ply in the standard 3DGS layout or a PlayCanvas SOG v2 .sog bundle, renders synthetic views with gsplat, runs SAM 3 Promptable Concept Segmentation over a vocabulary of noun phrases, and attributes the resulting 2D masks back onto individual Gaussians. There is no retraining and no per scene model.
Each exported object carries a label, position, oriented bounding box, supporting views and confidence, written to interactions.json alongside one .ply per object under stage4/instances/ and a run_report.md. Swapping a scene between its .ply and its .sog mid run demotes every gate, because the Gaussian order differs.
The lift's class pass is the ceiling on scene size, costing roughly 12 bytes per Gaussian per class of vocabulary. A 2 million Gaussian scene fits about 880 classes on a 24GB card and 1,200 on a 32GB card, a 14 million Gaussian scene about 130 and 180, and a 30 million Gaussian scene about 60 and 85.
Bruyère measured the stages on an RTX 5090, across a 2.1 million Gaussian interior and a 13.9 million Gaussian dense capture. Rendering 40 views at 1024 by 1024 took 31 seconds, and probing 73 prompts across 40 views took 5.0 minutes at 8GB. The lift took 168 seconds at 15.9GB peak on the large capture against 114 seconds at 4.9GB on the small one. Optional label verification runs 3.5 to 7 seconds per object on the RTX 4090 and RTX 5090 with support checks, putting 641 objects at roughly 70 minutes.
The tested configuration is Ubuntu 22.04 native, an RTX 4090 or RTX 5090, CUDA 12.8, PyTorch 2.7.1 on cu128 wheels and 64GB of RAM, and nothing else is supported. VRAM is a configuration value, a 24gb default rendering at 768 by 768 and a 32gb profile opt in at 1024 by 1024. Carveout renders minus Y up, and no splat container records an up axis, so orientation is the operator's to set.
The only front end is a browser app, carveout web, which binds to 127.0.0.1 on port 8090 and draws the scene on a three.js and SparkJS canvas. There is no headless mode, and nothing reaches the network at run time. An optional local vision language model, Qwen3.8-27B or Qwen3-VL-8B, both Apache-2.0 and loaded 4-bit, proposes the vocabulary and verifies labels, and is off by default. The SAM 3 checkpoints are gated under Meta's SAM License, and Carveout redistributes no weights.
Bruyère describes Carveout as a research project that is not actively maintained, with no CI, four unit tests, a single local user assumption and no authentication. The code is public on Carveout's main branch under GPL-3.0 or later. The repository is public now.



