Nodes/BrainDead Nodes/BD Transfer Pointcloud Colors (deprecated)
ComfyUI Node

BD Transfer Pointcloud Colors (deprecated)

The deprecated KD-tree transfer, and what to use instead

By BizaNator·Created 8 months ago·Updated 3 days ago· 15
BD Transfer Pointcloud Colors (deprecated)
  • mesh
  • pointcloud
  • mesh
  • status
coordinate_fixauto
max_distance0.000
default_color0.5,0.5,0.5,1.0

Sometimes a node's most useful feature is its "deprecated" tag, because it tells you which way the pack moved. BD Transfer Pointcloud Colors was the original way to get TRELLIS2 pointcloud colors onto a mesh - a hand-rolled KD-tree nearest-neighbor transfer with a clever axis-mismatch fix. Then the author built a better one on PyMeshLab and marked this deprecated. It still works, and it still teaches you something about the TRELLIS2 data model, but there's a "use this instead" sign right on the box.

What it is

A color-transfer node: TRELLIS.2's trimesh output → mesh, its pbr_pointcloud output → pointcloud, and the node copies vertex colors from the pointcloud onto the mesh by finding each mesh vertex's nearest point in the pointcloud. Its stated purpose was to bypass TRELLIS2's UV/texture pipeline entirely - you get vertex-colored geometry without ever dealing with the machine-made UVs, ready for export or decimation.

How it works

KD-tree nearest-neighbor: for each mesh vertex, find the closest pointcloud point and copy its color. That's the whole mechanism, and it's fast. The part that shows its age is the axis fix:

  • TRELLIS2 outputs its mesh in Y-up and its pointcloud in Z-up coordinates - two objects, two conventions, and a naive nearest-neighbor search would pair vertices with points that aren't anywhere near them.
  • coordinate_fix (default auto) detects and repairs the mismatch automatically. It's the interesting bit of this node and the reason to keep it around as a reference.

Other controls: max_distance (search cutoff in mesh units, 0 = unlimited - set it to stop wild color grabs) and default_color (RGBA for vertices with no nearby point).

Outputs: the colored mesh and status.

Why it's deprecated

The README's own framing: PyMeshLab's transfer is "the RELIABLE approach." The KD-tree version is simple and fast, but nearest-neighbor transfers are exactly the kind of thing where MeshLab's decades of edge cases win - better handling of density variation, distance limits, and artifacts. The pack's recommendation is unambiguous: use BD Transfer Colors (Pymeshlab) for pointcloud→mesh work. If you're starting a new workflow today, start there, not here.

That said, if you're debugging an old workflow or just want to understand the axis problem (it's the same mismatch BD OVoxel Bake and friends contend with), this node is a tidy explanation of the issue in code. coordinate_fix=auto is a genuinely thoughtful default - few packs bother to detect the Y-up/Z-up mismatch at all.

Gotchas

Two practical notes. First, max_distance=0 means unlimited - with a sparse pointcloud, "nearest" can be very far away, so consider setting a real cutoff and a sane default_color for the leftovers. Second, it still needs ComfyUI-TRELLIS2 installed to have produced the pbr_pointcloud input, and the pointcloud arrives in the pack's TRIMESH type. And if you were hoping for a direct upgrade path, the PyMeshLab replacement wants pip install pymeshlab - which this node does not need.

Installing it

ComfyUI Manager: search "BrainDead" → install. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/BizaNator/ComfyUI-BrainDead
cd ComfyUI-BrainDead
pip install -r requirements.txt

Restart, find it under 🧠BrainDead/Mesh. Or, you know, just install the pack and pick the PyMeshLab transfer instead. This one's for archaeology and for learning what the axis fix is doing.

Category🧠BrainDead/Mesh

Inputs (5)

NameTypeDefaultDescription
meshTRIMESH
pointcloudTRIMESHpbr_pointcloud from TRELLIS2
coordinate_fixoptCOMBOautoFix coordinate mismatch between mesh and pointcloud
max_distanceoptFLOAT0.0000–10Max distance for color transfer (0 = unlimited)
default_coloroptSTRING0.5,0.5,0.5,1.0RGBA color for vertices with no nearby points

Outputs (2)

NameTypeDescription
meshTRIMESH
statusSTRING