UV Select Split
Turn partial selections into whole-face selections
- BPY_OBJ
- BPY_OBJ
Somewhere in every UV cleanup you end up with a selection that only covers half a face. You grabbed a few vertices that sit on the same face as UVs you didn't grab, and now any operation you run acts on a broken, partial selection that doesn't match the actual mesh topology. UV Select Split is the "make it whole" button: it promotes the selection to every UV that belongs to a face with any selected UV.
It's a wrapper around Blender's bpy.ops.uv.select_split(), part of the Avatar Graph pack's auto-generated UV operator family. One input, one output, zero settings. It's the most quietly essential cleanup node in the family, because the pack's whole pipeline is built from chained selection operations, and partial selections are the natural failure mode of chaining.
How it works
The shared wrapper enters edit mode on your BPY_OBJ, calls select_split(), exits, and returns the same object. The operator looks at every face on the mesh: if any UV of that face is selected, it selects the face's remaining UVs too. Net effect - selection becomes "whole faces," which is what most downstream UV operations actually expect. Select a sliver of a face with a pick node, run UV Select Split, and you now own the entire face.
Why does that matter for avatars? Because UV operations are face-coherent: pinning, snapping, and unwrapping assume you're working in whole faces and islands. If you try to snap a half-selected face, you get a distorted quad that shows up as a fold in the texture on the character's cheek. Split before you snap and the fold never happens.
Inputs and outputs
- BPY_OBJ in - the mesh with the partial selection.
- BPY_OBJ out - the same mesh, selection now completed to whole faces.
Nothing else to configure. If you want the opposite - shrink a selection down to whole faces - this is already that. The node's sibling, UV Select More, grows selection outward; this one just closes the holes inside it.
Installing it
Avatar Graph installs as one pack, and the requirement that bites everyone is Python version: bpy==3.6.0 is pinned, so your ComfyUI environment must be 3.10. ComfyUI Manager users search "Avatar Graph"; manual install:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui
python -m pip install -r requirements.txt
Restart ComfyUI. First launch pulls the SAM ViT-H model (~2.5 GB) and mediapipe face/pose landmarkers in the background - expected behavior, not a hang. The README warns the pack is still evolving, so treat downloaded templates as "roughly right" rather than gospel.
Troubleshooting
The gotcha is upstream, not in this node: Select Split only completes selected faces. If nothing is selected, it no-ops. If your selection has a face where only one corner UV is selected, the node fixes it - but if the selection is genuinely partial across a boundary (two faces sharing one edge, one selected), it'll complete both, which may be more than you wanted. That's correct behavior for the operator; budget for it when you plan the chain.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |