Nodes/ComfyUI/TripoSplat Decode
ComfyUI Node Runs on cloud

TripoSplat Decode

From latent to a cloud of 3D gaussians

By Comfy-Org·Created 4 years ago·Updated about 12 hours ago· 130,663
TripoSplat Decode
  • samples
  • vae
  • splat
num_gaussians262144
seed0

TripoSplat is the model line that turns a latent directly into a 3D gaussian splat - no mesh extraction, no voxel-to-surface step. VAEDecodeTripoSplat is the node that makes that happen: it runs the sampled latent through Tripo's VAE decoder and hands you an actual SPLAT: thousands of 3D gaussians, each with position, scale, rotation, opacity, and spherical-harmonic color coefficients. Think of it as the "decode to a viewable 3D thing" step in a pipeline where the 3D thing happens to be a point-cloud-like splat.

How it works

You feed samples (the sampled latent, straight off the sampler) and vae (the TripoSplat VAE decoder - note it's specifically the decoder; the tooltip says so). Two knobs control the output:

  • num_gaussians (default 262144, range 32768–1,048,576) - how many gaussians to produce. The tooltip is refreshingly honest: 262144 matches the octree's point density, and going higher oversamples the same points - denser, but no new detail, at proportionally more VRAM and time. This is the density knob, not a quality knob, and cranking it is the newbie trap.
  • seed (default 0) - seeds the octree point sampler so decodes are deterministic. Same latent + same seed = same splat. Useful when you're iterating on downstream rendering and don't want the point placement shuffling under you.

The memory math you can't ignore

This node does real compute: it loads the decoder, calculates a memory budget from the channel count, gaussians, and model width, and each gaussian carries position, rotation, scale, opacity, and SH coefficients. At the default quarter-million gaussians that's already a heavy object; the decode cost scales with num_gaussians, and the maximum is four times the default. Leave it at 262144 unless you have a concrete reason, and when you do increase it, increase it knowingly.

Where it sits

The workflow is 3D generation: latent → sampler → this node → SPLAT → render (via a splat render node) or save. It's the newest corner of the 3D family in ComfyUI core - TripoSplat support landed around mid-2026 - so expect the surrounding ecosystem to be thinner and the docs to be younger than for Hunyuan3D.

Gotchas

The output is a SPLAT, a distinct type - you can't hand it to a mesh node, and you need a splat renderer to see it. Determinism note: the seed makes decodes reproducible, but it samples the octree points; if you change num_gaussians the point set changes regardless of seed, so pin both when you're comparing runs. And again: more gaussians ≠ better. At 262144 the decoder already places one gaussian per octree point; beyond that you're thickening the same surface, which reads as density, not detail.

Categorymodel/latent/triposplat

Inputs (4)

NameTypeDefaultDescription
samplesLATENT
vaeVAETripoSplat VAE decoder
num_gaussiansINT26214432768–1048576Number of gaussians to produce (rounded to a multiple of 32). 262144 matches the octree's point density; higher oversamples the same points (denser, but no new detail) and costs proportionally more VRAM/time.
seedINT00–18446744073709550000Seeds the octree point sampler (global RNG) for deterministic decodes.

Outputs (1)

NameTypeDescription
splatSPLAT