Mesh Edge Split
Cut a mesh apart without deleting anything
- BPY_OBJ
- BPY_OBJ
This is the one-shot, manual version of Blender's Edge Split modifier - except instead of a non-destructive shading effect, it actually duplicates geometry. Wherever the selected edges (or vertices) sit, the faces on either side stop sharing them: what used to be one continuous surface becomes two pieces that happen to occupy the same space, disconnected at the seam. Nothing gets deleted, nothing moves - connectivity is what changes.
Why that's useful here
Avatar Graph builds 2.5D interactive avatars: segment a character image, generate a mesh per layer, then rig things like eye-blink and mouth-open motion with shape keys before streaming the result to Avatech's live viewer. Shape-key rigging generally wants clean breaks at the boundaries of things that move independently - an eyelid shouldn't drag the surrounding skin with it when it blinks. Edge Split is the tool for forcing that kind of seam deliberately, at a spot you've selected, rather than relying on however the mesh happened to come out of the generation step.
Like its nineteen siblings, this node isn't documented in the README's own node table (that covers the headline pieces - Create Mesh Layer, Mesh Modify Shape Key, Avatar Main Output, and so on). These Mesh_* nodes are a separate, auto-generated layer: the repo's dev notes describe regenerating Blender operator bindings via a generate_blender_types.py script, and this node's name maps straight onto Blender's own bpy.ops.mesh.edge_split.
Inputs and outputs
BPY_OBJ in, BPY_OBJ out, plus one setting: type, an enum choosing the split context - EDGE (split along the currently selected edges) or VERT (split at the currently selected vertices instead). Which one you want depends on what you selected upstream and how localized you need the cut: VERT is the tighter, more surgical option when you only want a single point pried apart rather than a whole edge run. As with the rest of this family, there's no explicit "which geometry" parameter beyond that - the selection state travels along with the BPY_OBJ from whatever ran before this node.
Installing Avatar Graph
Search "Avatar Graph" in ComfyUI Manager for the quick path, or go manual: cd ComfyUI/custom_nodes && git clone https://github.com/avatechai/avatar-graph-comfyui, then python -m pip install -r requirements.txt from inside that folder, then restart. One catch if you copy commands straight from the README - its own manual-install snippet points the git clone at avatechgg, not avatechai; use the canonical repo URL instead.
The part that actually determines success is Python version, not the clone. This pack runs on bpy, Blender's Python API package, which is version-pinned - you need Python 3.10.x. A modern ComfyUI on 3.11 or 3.12 will fail to install or import it. On Mac/Linux, a dedicated conda environment sidesteps the whole issue (conda create --name comfyui python=3.10); on Windows the author ships a full prebuilt ComfyUI + Python 3.10 zip for exactly this reason, rather than expecting a retrofit.
After that, restart with python main.py --enable-cors-header (add --force-fp16 on Mac) if you want the live avatar preview talking to Avatech's hosted editor. Skip the flag and the pack still works fully - you just lose the real-time panel and export via right-click → Save on Avatar Main Output instead.
Common issues
No models to download, no unusual runtime dependency beyond bpy - most trouble traces back to that Python pin, or to a missing CORS flag if the live preview stays dark. The README's own admission that nodes and templates are still evolving explains why a node this specific ships with no built-in description at all.
One thing worth knowing about this particular operator: splitting duplicates geometry rather than removing it, so if you run it repeatedly on the same selection without realizing the seam is already there, you can end up with redundant overlapping edges rather than a visible error. If your mesh starts behaving oddly after a chain of edits, check whether an earlier split already did the job you're trying to do again.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| typeopt | COMBO | 2 options: EDGE, VERT |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |