✂️ Multi Mesh Cutter (Sequential)
It's a sphere delete, not a boolean — place it accordingly
- mesh
- cutter_mesh_1
- cutter_mesh_2
- cutter_mesh_3
- cutter_mesh_4
- cutter_mesh_5
- cutter_mesh_6
- cutter_mesh_7
- cutter_mesh_8
- cutter_mesh_9
- cutter_mesh_10
- mesh
- info
Here's what's happening in the graph when you want to cut the base off a bust without opening Blender: you feed in the mesh, feed in something to cut with, and it removes the overlap. Simple.
Except it doesn't do a boolean. Read the source before you trust the word "cut", because the mechanism decides how you place your cutter geometry.
What it actually does
For each connected cutter mesh, it computes the cutter's centroid and the maximum distance from that centroid to any of its vertices - a bounding sphere radius. Then it walks the target mesh's faces, measures the distance from each face centre to the cutter centroid, and deletes every face inside that radius (invert flips it: keep only what's inside).
That's it. No intersection curves, no boolean kernel, no new geometry along the cut line. It's a hard-edged sphere delete with a ragged boundary of whatever triangles the radius happened to bisect.
Which means:
- A cube cutter does not cut a cube. Its radius is the distance from centre to corner, so it removes a sphere that circumscribes the box - noticeably bigger than the shape you placed.
- A long thin cutter (a wall, a slice plane) has a huge radius because its far vertices are far from its centre. It will remove an enormous ball. Do not try to slice a mesh in half with a thin box; the result will look like a bite.
- The best cutters are spheres and small round-ish blobs, where the bounding sphere is basically the shape.
- Rotation of the cutter is irrelevant. Only its centroid and its furthest vertex matter. (You can prove this to yourself in thirty seconds: rotate the cutter, nothing changes.)
Once you internalise that, this node becomes what it actually is - an extremely fast, extremely predictable "nuke everything near this point" tool, which for cleaning up generated meshes covers a lot of ground.
The sequential part
cutter_mesh_1 … cutter_mesh_10 are applied in order, each to the output of the previous one. So cutter 2 sees the mesh after cutter 1's faces are gone. Ten cutters, ten passes, and the info output tallies it: Multi-Cut complete. Used 4 cutters. Total removed: 128431 faces. That face count is the useful readout - if a cut removed a suspicious 400k faces, your radius was wrong.
Inputs: mesh (TRIMESH, required), invert (BOOLEAN, default off), then the ten optional cutters. Outputs: mesh and info.
Where the cutters come from
This is the practical friction nobody mentions. The sockets take TRIMESH, so you need actual mesh geometry, and this pack doesn't ship a primitive generator. Your options: model a sphere/cube in Blender and load it with the pack's LoadMesh, pull a primitive out of another node pack, or reuse something already in the graph - a piece of the character itself is often a perfectly good cutter, since all that matters is the centroid and the radius you're aiming.
invert is more useful than it looks. Turning it on keeps only the faces inside the sphere, which makes this a legal crop node: drop a cutter centred on a head, invert, and you've isolated the head geometry for a separate processing branch.
The usual caveat: scale
Everything here is in mesh units, and there's no visual gizmo. You're setting position by moving the cutter mesh, which in ComfyUI means either a transform node from another pack or (more realistically) preparing the cutter at the right place and size in Blender and loading it. On a unit-scale model, a cutter sphere of radius 0.3 is a big bite; on a 100-unit scene it's a pinprick. Check the removed-face count in info - it's the cheapest feedback loop you have.
For a clean cut with new geometry along the seam, this is the wrong tool; you want a boolean. For "chop this generated mesh into two usable halves right now, in the graph, with no extra software", it's two nodes and it's instant.
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 by name (Antonioilev Light Pack) but installs no dependencies for it - the repo contains no requirements.txt and no install.py - so trimesh is a manual pip install into ComfyUI's own Python environment. Later in the chain, Smart Normals Conform is a sensible follow-up: sphere-deleting faces leaves open boundaries and messy winding, and the export will thank you.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| mesh | TRIMESH | — | |
| invert | BOOLEAN | false | — |
| cutter_mesh_1opt | TRIMESH | — | |
| cutter_mesh_2opt | TRIMESH | — | |
| cutter_mesh_3opt | TRIMESH | — | |
| cutter_mesh_4opt | TRIMESH | — | |
| cutter_mesh_5opt | TRIMESH | — | |
| cutter_mesh_6opt | TRIMESH | — | |
| cutter_mesh_7opt | TRIMESH | — | |
| cutter_mesh_8opt | TRIMESH | — | |
| cutter_mesh_9opt | TRIMESH | — | |
| cutter_mesh_10opt | TRIMESH | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| mesh | TRIMESH | — |
| info | STRING | — |