Mesh Edgering Select
Grab a parallel band of edges in one click
- BPY_OBJ
- BPY_OBJ
Unlike most of its neighbors in this pack, Mesh Edgering Select doesn't edit geometry - it edits selection. Give it a mesh with one active edge and it walks the topology to grab the whole parallel band running around the mesh: the "ring," in Blender terms, as opposed to a "loop," which runs end-to-end in sequence rather than side-by-side. It's the direct wrapper around Blender's edgering_select operator, and it's the node you'd chain right before something like Edge Collapse, Edge Rotate, or one of this pack's extrude nodes to tell them exactly what to act on.
Why a selection node exists here
Avatar Graph, from Avatech AI, wraps ComfyUI around a Blender mesh-editing pipeline for building 2.5D interactive avatars - segment a character image, mesh each layer, rig shape keys for blink and mouth movement, and stream the result to Avatech's live web viewer. Every one of the mesh-editing nodes in this batch (extrude, collapse, split, rotate, and so on) works by acting on whatever's currently selected on the BPY_OBJ it receives, the same way Blender's Edit Mode tools do. Something upstream has to actually make that selection, and this is one of the tools that can. It's not part of the README's documented high-level node table - none of these twenty are - because it belongs to a separate, auto-generated layer: the repo mentions a generate_blender_types.py script for regenerating Blender operator bindings, and this node's name maps directly onto bpy.ops.mesh.edgering_select.
Inputs and outputs
This is the one node in the batch with real selection controls exposed, four booleans on top of the BPY_OBJ:
- ring (default
true) - the real mode switch. Leave it on and you get an edge ring (the parallel band). Turn it off and the same node behaves like Blender's edge loop select instead, walking end-to-end rather than side-to-side. - extend - add the new selection to whatever's already selected, rather than replacing it.
- deselect - the inverse: remove the ring/loop from the current selection instead of adding it.
- toggle - flip the selection state of whatever the ring/loop covers.
All default to false except ring, so out of the box this replaces the current selection with a fresh edge ring. Output is the same BPY_OBJ, now carrying the updated selection, ready to feed into whichever editing node needs it next.
Installing Avatar Graph
Search "Avatar Graph" in ComfyUI Manager and install, or go manual: cd ComfyUI/custom_nodes && git clone https://github.com/avatechai/avatar-graph-comfyui, then python -m pip install -r requirements.txt inside that folder, then restart. (Ignore the README's own manual-clone command if you copy it verbatim - it points at avatechgg instead of avatechai; use the URL above.)
The dependency that actually determines whether this installs cleanly is Python version. bpy, the Blender API package this whole pack runs on, is pinned to Python 3.10.x wheels - a stock modern ComfyUI on 3.11/3.12 will fail on it. Conda is the simplest fix on Mac/Linux (conda create --name comfyui python=3.10); on Windows, the author bundles a dedicated ComfyUI + Python 3.10 zip rather than expecting you to retrofit one.
Once it's running, launch with python main.py --enable-cors-header (Mac: add --force-fp16) if you want the live avatar preview panel talking to Avatech's hosted editor. Skip it and everything still works, minus the real-time view - you'd export via right-click → Save on Avatar Main Output instead.
Common issues
No model weights, no heavy runtime beyond bpy - the friction is almost entirely the Python pin or the CORS flag. The README is upfront that nodes and templates are still in flux, which explains the blank built-in descriptions across this whole family.
Specific to this node: ring off vs on is easy to forget about and produces a completely different selection with everything else held constant, so if a downstream edit is grabbing the wrong geometry, check that flag before anything else. And since this only changes selection state, running it with nothing sensible already picked (or on a mesh where no active edge is set) just leaves you with an empty or unchanged selection rather than throwing an error.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| extendopt | BOOLEAN | false | — |
| deselectopt | BOOLEAN | false | — |
| toggleopt | BOOLEAN | false | — |
| ringopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |