π¨ Mesh Colorizer (Legacy)
Mesh Colorizer (Legacy) is the 10-slot Multi Colorizer wearing an old ID
- mesh_1
- color_1
- mesh_2
- color_2
- mesh_3
- color_3
- mesh_4
- color_4
- mesh_5
- color_5
- mesh_6
- color_6
- mesh_7
- color_7
- mesh_8
- color_8
- mesh_9
- color_9
- mesh_10
- color_10
- m1
- m2
- m3
- m4
- m5
- m6
- m7
- m8
- m9
- m10
Straight from the source, because it saves you ten minutes of comparing the two nodes: MeshColorizer and MultiColorizer are the same Python class registered twice under two names. Same ten optional slots, same ten outputs, same code path. "Legacy" is not older or weaker - it exists so that workflows built against the earlier node ID still load.
So the real question isn't which one, it's why you'd tint a mesh at all in a ComfyUI graph.
What it does
For each of the ten optional slots, if a mesh is connected, it copies it and writes a flat colour into its vertex colours - an RGBA array of the hex you picked, alpha 255, repeated for every vertex. Unconnected slots pass None through to their matching output. The node also returns the colour list as UI data so the values survive a save/reload.
That's it. It's not a texture, it's not a material, it's not UV work. It's per-vertex flat colour.
What that's actually good for
Three real uses in a mesh pipeline:
- Debugging part identity. Colour part 1 red, part 2 blue, and instantly see which component is which in the preview instead of counting vertices. This is the same trick
Hole SurgeonandRefine Meshuse internally when they paint their patches. - Vertex-colour assets. Plenty of pipelines - game-engine imports, some Blender viewport workflows, mesh previews in this pack's own 3D viewers - consume vertex colours directly. Flat colour per part is a legitimate cheap "material" for a prop, a blockout, or an AO-baked pass.
- Masking by construction. Merging ten coloured parts gives you a single mesh whose vertex colours encode part boundaries - cheap instance masking without UVs.
What it is not good for: anything that has to survive into a texture-mapped asset. Vertex colour is per-vertex, so a low-poly part gets ten interpolated colour blobs, and any downstream node that resets the visual block (the pack's Hole Filler does exactly this) throws your work away.
Inputs and outputs
Ten pairs, all optional - the node never blocks the queue if you only wire three:
mesh_1β¦mesh_10- TRIMESH (also accepts theMESHtype other 3D packs use, which is why you can feed 3D-Pack output straight in).color_1β¦color_10- hex colour, default#FFFFFF.
Ten outputs, m1 β¦ m10, same order. The pairing is positional: whatever you wire into mesh_3 comes out of m3 wearing color_3. Slots you left empty output None, which is fine for chaining into another colourizer or a scene builder, but will break nodes that assume a real mesh - so wire only the outputs you use.
Why ten? The author's own pipelines are multi-part: head, hair, torso, hands, props. Ten numbered slots beat a variable-list socket for that, at the cost of a cluttered node.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Antonioilev/ComfyUI_Antonioilev_Lightpack.git
python -m pip install trimesh
Restart ComfyUI. Manager will clone the pack (search Antonioilev Light Pack) but won't install anything, since the repo ships no requirements.txt and no install.py - trimesh (plus numpy, which is always there) is your responsibility. If neither colourizer shows up in the Add Node menu, look at the pack's startup line: [Antonioilev_Light_pack] Loaded N nodes (M failed), followed by !!! MeshColorizer: No module named 'trimesh' if that's the cause.
Two gotchas
Colour after geometry, not before. Any repair node in this pack can replace the visual block; Refine Mesh and Hole Surgeon both write their own debug colours. Colour last, right before export or preview.
The ui return includes the colours, which means a saved workflow keeps them - but the colour values are also just an input default, so if a colour looks wrong after a workflow gets shared around, check the widget rather than the code.
If you're building a 10-part character and want each part distinguishable in the viewport with zero texture work, this is the five-second answer. If you want the parts to look like metal, use a material.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| mesh_1opt | TRIMESH,MESH | β | |
| color_1opt | COLOR | #FFFFFF | β |
| mesh_2opt | TRIMESH,MESH | β | |
| color_2opt | COLOR | #FFFFFF | β |
| mesh_3opt | TRIMESH,MESH | β | |
| color_3opt | COLOR | #FFFFFF | β |
| mesh_4opt | TRIMESH,MESH | β | |
| color_4opt | COLOR | #FFFFFF | β |
| mesh_5opt | TRIMESH,MESH | β | |
| color_5opt | COLOR | #FFFFFF | β |
| mesh_6opt | TRIMESH,MESH | β | |
| color_6opt | COLOR | #FFFFFF | β |
| mesh_7opt | TRIMESH,MESH | β | |
| color_7opt | COLOR | #FFFFFF | β |
| mesh_8opt | TRIMESH,MESH | β | |
| color_8opt | COLOR | #FFFFFF | β |
| mesh_9opt | TRIMESH,MESH | β | |
| color_9opt | COLOR | #FFFFFF | β |
| mesh_10opt | TRIMESH,MESH | β | |
| color_10opt | COLOR | #FFFFFF | β |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| m1 | TRIMESH,MESH | β |
| m2 | TRIMESH,MESH | β |
| m3 | TRIMESH,MESH | β |
| m4 | TRIMESH,MESH | β |
| m5 | TRIMESH,MESH | β |
| m6 | TRIMESH,MESH | β |
| m7 | TRIMESH,MESH | β |
| m8 | TRIMESH,MESH | β |
| m9 | TRIMESH,MESH | β |
| m10 | TRIMESH,MESH | β |