VNCCS 3D Factory
A real 3D Gaussian studio that lives inside ComfyUI
- preview
If you've ever looked at image-to-3D in ComfyUI, you've probably met the ecosystem's dirty secret: the good node packs are a nightmare to install. ComfyUI-3D-Pack needs a stack of compiled CUDA extensions matched to your exact PyTorch build, and the issue tracker reads like a support forum. VNCCS 3D Factory is the alternative from the VNCCS side of the world - a full scene-oriented 3D workspace that runs entirely inside one node, no separate server, no compiling anything by hand.
The name is doing a lot of work, and mostly delivering. This isn't a single "image in, mesh out" node. It's a persistent scene editor: you feed it reference images, it generates editable 3D Gaussian models locally, drops them into a scene you can reopen, and renders them in a real viewport with orbit, pan, and zoom controls. It's from AHEKOT, the author of the VNCCS Visual Novel Character Creation Suite, and it shows - this is a polished all-in-one tool, not a wrapper around a script.
How it works
The generation side runs the open-source VAST TripoSplat pipeline in-process with ComfyUI's own PyTorch device. No API key, no external inference server, no llama.cpp. A reference image gets background-removed (BiRefNet), encoded through the model's conditioning encoders (DINOv3 vision plus a Flux VAE), and the TripoSplat decoder emits a Gaussian PLY. Those are real 3D Gaussian splats - millions of little colored blobs - not a textured mesh, which matters for what you can do with the output (more below).
What elevates it above the "generate a PLY and stare at it" crowd is the scene manager. Scenes persist on the ComfyUI host under ComfyUI/output/vnccs_3d_factory/scenes/, so you can add multiple objects, move/rotate/scale them with viewport gizmos (or exact numeric fields in a collapsed panel), import existing Gaussian PLYs, save up to 32 named cameras, and export the whole thing - transforms baked into real Gaussian centers and covariance, plus camera metadata - as an editable PLY. There's a Gaussian Library that saves objects or scenes as .vnccs3d packages and can sync them to HuggingFace through the Pose Studio repo workflow.
The inputs that matter
Honestly, for the node itself: almost none. VNCCS_3DFactory takes a single factory_data state string (the JSON that persists your scene and settings - leave it alone) and outputs a preview as a list of IMAGEs. This is an output node. All the real work happens in the node's UI - the TripoSplat panel, the scene list, the viewport - not through sockets. Wire the preview into a PreviewImage if you want the render in the graph, and treat the rest as a self-contained app.
Installing it
The pack installs like any other:
cd ComfyUI/custom_nodes
git clone https://github.com/AHEKOT/ComfyUI_VNCCS_Utils.git
cd ComfyUI_VNCCS_Utils
pip install -r requirements.txt
Or just search VNCCS Utils in ComfyUI Manager and click install. Then restart. That's the easy part.
The heavier part is the model weights. Open Model setup inside the node's TripoSplat section and use the graphical downloader - it pulls five official weight files into the standard ComfyUI/models/{diffusion_models,vae,clip_vision,background_removal} folders, and respects extra_model_paths. If you'd rather host them elsewhere, set the VNCCS_TRIPOSPLAT_MODELS environment variable to a models root with the same subfolders before starting ComfyUI.
Common issues & honest expectations
- VRAM and patience. 131K gaussians is the normal quality setting; 262K is the supported max. The 524K and 1.05M modes are explicitly experimental - full-attention decoding on 16K/32K tokens. If you're on a consumer card, stick to 131K and let it run.
- You get gaussians, not a mesh. Gaussian splats render photorealistically and are great for scenes and novel views, but they're not geometry a game engine can collide against or a printer can slice. If your pipeline needs a
.glb, this is the wrong tool - the export path is PLY only, and the import path explicitly rejects polygon-mesh PLYs. - This is not magic. As the KB on 3D generation puts it, image-to-3D surfaces are genuinely impressive while the geometry underneath is a different story. For static props and scene renders that's fine; don't expect rig-ready topology.
The model downloads are the one thing people get stuck on - if the viewport shows nothing, that's almost always missing weights, and the graphical setup dialog is the fastest way to diagnose it.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| factory_data | STRING | {"schema_version":10,"scene_id":"","selected_object_id":"","selected_group_id":"","selected_object_ids":[]} | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| preview | IMAGE | — |