Nodes/BrainDead Nodes/BD OVoxel Bake
ComfyUI Node

BD OVoxel Bake

TRELLIS2 voxelgrid to textured mesh in one node — BD OVoxel Bake

By BizaNator·Created 8 months ago·Updated 3 days ago· 15
BD OVoxel Bake
  • voxelgrid
  • mesh
  • diffuse
  • normal
  • metallic
  • roughness
  • alpha
  • status
decimation_target50000
texture_size2048
remeshfalse
remesh_band1.0
remesh_project0.9

Here's the thing nobody warns you about when you generate a 3D asset with TRELLIS2: what comes out of the model is a voxelgrid, not a mesh you can ship. To get an actual textured mesh you used to have to assemble a four-node chain - simplify, UV unwrap, then a manual bake where a mistake left you with seam lines or a color mismatch. BD OVoxel Bake collapses all of that into one node. Give it the TRELLIS2 voxelgrid, get back a simplified, UV-unwrapped, PBR-textured mesh and the individual maps, using Microsoft's o_voxel reference implementation - the same bake pipeline as TRELLIS2's official demo.

The mechanics are worth understanding because they explain the settings. The node runs six stages internally: multi-stage CuMesh simplification with topology repair, GPU UV unwrapping with vertex normals, BVH projection onto the original high-res mesh so sampling is accurate, trilinear interpolation from the sparse voxel tensor, UV seam inpainting, and a coordinate-system conversion. That last one is exactly why your TRELLIS2 output shows up correctly oriented where a naive bake would be flipped.

The inputs that actually matter

Three required inputs, and you mostly touch two of them:

  • voxelgrid - the TRELLIS2 voxelgrid carrying PBR attributes (it needs the original vertices/faces and the attrs tensor). Wire it straight from BD Pixal3D Image to 3D's voxelgrid output or a TRELLIS2 texture node.
  • decimation_target (default 50000) - target face count after simplification. Lower it if you want a genuinely low-poly asset; raise it if you're keeping detail.
  • texture_size (default 2048) - output texture resolution. The voxelgrid source runs 512–1536, but normal maps genuinely benefit from going higher. 2048 is a sane default; 4096 if you're exporting for a hero asset.

remesh (off by default) enables dual-contouring remesh - better topology but slower. If you flip it on, remesh_band and remesh_project control the narrow-band width and how much it projects back onto the original surface. Defaults are fine for a first run.

Outputs: mesh (the textured TRIMESH), plus diffuse, normal, metallic, roughness, and alpha as separate IMAGE maps, and a status string. Those maps are your PBR set - feed them to BD Pack Bundle or an exporter.

Install

This is part of ComfyUI-BrainDead: Manager → search "BrainDead", or clone + pip install -r requirements.txt into custom_nodes, then restart. It needs the pack's GPU mesh dependencies (CuMesh / xatlas for unwrap) and a current ComfyUI with the V3 API. Model weights for the upstream generators (TRELLIS2, or the ~10GB Pixal3D set) are what actually eat disk and first-run time - the bake itself doesn't download anything.

Where it fits and where it trips

The README's canonical flow: Pixal3D → voxelgrid → BD OVoxel Bake → mesh + PBR textures, or its alternative - Pixal3D → voxelgrid → BD OVoxel Texture Bake (bake-only, if you already have your own simplified, unwrapped mesh). Use the all-in-one when you want a textured mesh in one shot; use the texture-bake sibling when you want control over the simplify and unwrap steps yourself.

The honest caveat applies here like everywhere in 3D generation: the bake makes the surface game-ready - PBR channels, seams handled - but the underlying topology is still generated. For a static prop that's fine; for something that has to deform, plan a retopo pass after. And if the bake looks wrong, check that you fed a genuine TRELLIS2 voxelgrid with the original mesh data attached - a voxelgrid without original_vertices/faces will come back with sampling garbage, not a clean texture.

Category🧠BrainDead/Mesh

Inputs (6)

NameTypeDefaultDescription
voxelgridVOXELGRIDTRELLIS2 voxelgrid with PBR attributes (needs original_vertices/faces and attrs tensor)
decimation_targetINT500001000–2000000Target face count for mesh simplification
texture_sizeINT2048512–8192Output texture resolution (voxelgrid source is 512-1536, but normal maps benefit from higher)
remeshBOOLEANfalseEnable dual-contouring remesh (better topology, slower)
remesh_bandoptFLOAT1.00.5–3Remesh narrow band width (only used if remesh=True)
remesh_projectoptFLOAT0.90–1Project back to original surface (0=none, 1=full)

Outputs (7)

NameTypeDescription
meshTRIMESH
diffuseIMAGE
normalIMAGE
metallicIMAGE
roughnessIMAGE
alphaIMAGE
statusSTRING