Mesh Select Loose
Find the geometry nothing else is attached to
- BPY_OBJ
- BPY_OBJ
Join a bunch of meshes together, run an aggressive cleanup pass, or generate geometry programmatically, and you can end up with stray vertices or edges that aren't connected to any face - invisible junk floating inside an otherwise fine mesh. This node finds exactly that: Blender's real bpy.ops.mesh.select_loose operator, exposed as a ComfyUI node inside Avatar Graph, the pack that runs actual Blender inside ComfyUI's process (via the bpy Python package) to build interactive 2D-to-3D avatars, auto-generating a node for every mesh operator Blender has. It's a small, unglamorous tool, but it's exactly the kind of thing worth running before an export - loose geometry that looks harmless in the viewport can cause real problems once a mesh is triangulated, rigged, or handed to an engine that doesn't expect it.
How it works
It scans the mesh for "loose" geometry - vertices with no edges attached, or edges with no faces attached - and selects it. There's no judgment call involved beyond that definition; anything genuinely disconnected from the mesh's actual surface qualifies, and the typical next step is deleting whatever comes back.
Inputs and outputs
BPY_OBJ- the mesh coming in from earlier in the graph.extend(default false) - whether the loose geometry found gets added to whatever's already selected, or replaces the selection outright. Leave it off for a clean, exact result if you're about to delete what it finds.
Output is a single BPY_OBJ - the same object, with loose geometry now selected.
Installing it
ComfyUI Manager: search "avatar-graph-comfyui", install, restart. Manually: cd ComfyUI/custom_nodes && git clone https://github.com/avatechai/avatar-graph-comfyui, then cd avatar-graph-comfyui && python -m pip install -r requirements.txt, then restart.
Python 3.10.x is the requirement to sort out before anything else - the bpy package this pack is built on needs that exact minor version, and the README recommends a dedicated conda environment on macOS/Linux (conda create --name comfyui python=3.10) rather than trusting an existing install. Windows users get a prebuilt ComfyUI + Python 3.10 zip linked in the README to unzip over their install before adding the pack through Manager. Restart with --enable-cors-header (macOS also wants --force-fp16) for the live 3D preview - without it, the graph still runs fine, you just save the model manually from the pack's Avatar Main Output node instead.
Common issues
Check the Python version first if this pack's nodes aren't loading - 3.10.x is a hard requirement for bpy to have a working build. On this node, the main thing worth knowing is that "loose" here means genuinely disconnected - no faces, no attached edges - not just "small" or "far away." A tiny isolated piece of actual mesh (a few connected faces, floating off on their own) won't get caught by this node the way a stray vertex will, since it has faces attached even if it's spatially separate from the rest of the model; for that case you'd want a different selection approach, like Mesh Select Linked working from a manual pick of that piece. As with every mesh node in this pack, feeding it something other than a real mesh BPY_OBJ from earlier in the same graph surfaces as a Blender-side error.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| extendopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |