Mesh Extrude Edges Move
Pull an edge loop into a wall
- BPY_OBJ
- BPY_OBJ
This is the version of "extrude edges" most people actually want: select an edge or a whole loop, and it extrudes them as one connected region - new faces stitched between the old edges and the new ones, like pulling a wall up out of a boundary line. That's the opposite of its sibling Mesh_ExtrudeEdgesIndiv, which extrudes each edge separately into disconnected geometry. This one keeps everything joined.
Why it's useful here
It's a direct wrap of Blender's bpy.ops.mesh.extrude_edges_move - one of twenty low-level Blender operator wraps in this pack, none of which show up in the README's own documented node table (that one lists the headline nodes: Create Mesh Layer, Mesh Modify Shape Key, Avatar Main Output). The repo's dev notes mention regenerating Blender operator bindings with a generate_blender_types.py script, which is exactly where this naming convention comes from - you're editing raw Blender topology, not using a bespoke avatar-authoring tool.
Avatar Graph itself, from Avatech AI, is about turning one character image into a 2.5D interactive avatar: segmentation, per-layer mesh generation, shape-key rigging for blink/mouth motion, then a live view through Avatech's hosted editor. Extruding an edge boundary into new geometry is a normal step if you're hand-building or repairing the mesh that pipeline works from, rather than relying purely on the automated Create Mesh Layer output.
Inputs and outputs
Just BPY_OBJ in, BPY_OBJ out - no other parameters. That's a real gap compared to how this operator behaves inside Blender itself, where the "Move" is normally driven by a live mouse drag right after the extrude fires. With no offset or vector exposed in this schema, treat the node as producing the new, connected edge geometry sitting directly on top of the old - you'll want a separate transform step downstream (or to study how the pack's own workflow templates chain these) to actually displace it.
As with the rest of the family, which edges get extruded is entirely a function of the selection already carried on the incoming BPY_OBJ, set by whatever selection or prior editing node ran before this one.
Installing Avatar Graph
Through ComfyUI Manager: search "Avatar Graph," install, restart. Manually: 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. Watch out - the README's own manual-install command clones from avatechgg, not avatechai; use the canonical URL above instead, which matches the repo everywhere else including the Manager listing.
The thing that actually decides whether install succeeds is Python version. This pack runs on bpy, and bpy only ships wheels for specific Python builds - you need 3.10.x exactly. A newer ComfyUI on Python 3.11/3.12 will fail installing or importing it. Conda handles this cleanly on Mac/Linux (conda create --name comfyui python=3.10); on Windows, the author ships a prebuilt ComfyUI + Python 3.10 zip rather than expecting a retrofit.
Once running, restart with python main.py --enable-cors-header (Mac: add --force-fp16) if you want the live avatar preview reaching Avatech's hosted editor. Skip it and the pack still fully works - you export via right-click → Save on Avatar Main Output instead of watching a live view.
Common issues
No models to download, nothing unusual beyond bpy - most install trouble is the Python pin, most preview trouble is the missing CORS flag. The README's own warning that nodes and templates are still being iterated on is a fair excuse for why a node this specific has zero built-in description.
Specific to this one: with no offset param exposed, don't expect anything to visibly displace on its own - new geometry lands right where the old geometry was. If nothing looks different after running it, that's the expected behavior given the schema, not a bug; chain a transform node after it if you need actual movement.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |