Nodes/ComfyUI/Voxel to Mesh
ComfyUI Node Runs on cloud

Voxel to Mesh

Where Hunyuan 3D's blocky world becomes an actual mesh

By Comfy-Org·Created 4 years ago·Updated 5 minutes ago· 129,952
Voxel to Mesh
  • voxel
  • MESH
algorithm
threshold0.60

Voxel to Mesh is the bridge between the two halves of the image-to-3D pipeline. The generation half (Hunyuan 3D v2) doesn't actually produce a mesh - it produces a voxel grid, a 3D array of "is this cell solid or empty" values, which is the latent-ish representation those models work in. This node turns that grid into real geometry: vertices and faces you can look at, export, and drop into Blender. No voxels in, no mesh out. It's the node between VAEDecodeHunyuan3D and Save 3D Model, and it's the step that decides whether your result looks like a smooth statue or a minecraft block.

It's ComfyUI core, "3d" category, no install. It landed in March 2025 alongside the Hunyuan 3D v2 support, and the smarter of its two algorithms arrived the next month.

The two algorithms

The algorithm dropdown is the heart of this node, and it's where quality is made or lost:

  • surface net - the good one. It runs the voxel values through a smoothing pass, interpolating the surface through each grid cell rather than just cutting blocks. You get smooth, watertight-looking geometry with far fewer artifacts. It's slower (it iterates every cell that contains a surface), but for a one-shot generation step it's worth it. This is what you want for anything you'll actually show someone.
  • basic - the original marching-cubes-style approach, which extracts the faces of the solid voxels directly. Fast, blocky, and honestly a little gross for final output. It still exists for speed and for compatibility with old workflows.

The threshold slider (default 0.6, range -1 to 1) is the on/off line: any voxel value above it counts as solid, below it counts as empty. Lower it to capture more soft geometry, raise it to trim noise. 0.6 is a sensible starting point; drop to ~0.4 if your result looks hollow or missing surface.

The wider workflow

This is where it sits in the standard Hunyuan 3D v2 image-to-model blueprint:

Load Image → CLIPVisionEncode → Hunyuan3Dv2Conditioning → EmptyLatentHunyuan3Dv2
   → KSampler → VAEDecodeHunyuan3D → VoxelToMesh → Save 3D Model

The voxel input takes a VOXEL from VAEDecodeHunyuan3D, and the single MESH output feeds straight into Save 3D Model. Simple chain, and this is the only place the voxel becomes something you can touch.

What people actually hit

First, expectations. The native Hunyuan 3D path in ComfyUI outputs geometry only - no texture, no rigging. That's a well-known community caveat: the model generates the shape and stops. If you need a textured or rigged asset, you're looking at the third-party pipeline ecosystem or a retopology/texturing pass, because this node (and the whole native path) gives you a clean but naked mesh.

Second, don't feed the MESH output into a node expecting a file - Save 3D Model will happily take it (that's its job), but a preview node wants a FILE_3D. If your graph complains about types, the missing piece is the save node's conversion.

Third, VRAM and patience: the surface-net pass runs on every surface cell, so a high-resolution voxel grid from a big generation can take a real while and chew memory. It's a one-time cost per model; set it going and it'll land. If it's painfully slow, that's the algorithm working as advertised, not a hang.

Category3d

Inputs (3)

NameTypeDefaultDescription
voxelVOXEL
algorithmCOMBO2 options: surface net, basic
thresholdFLOAT0.60-1–1

Outputs (1)

NameTypeDescription
MESHMESH