Nodes/Avatar Graph/Mesh Edge Face Add
ComfyUI Node

Mesh Edge Face Add

Blender's F-key, wired into ComfyUI

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Mesh Edge Face Add
  • BPY_OBJ
  • BPY_OBJ

This one node does two different things depending on what's selected, exactly like pressing F in Blender: select two vertices and it draws an edge between them; select three or more that form an open boundary (a loop with a gap, essentially) and it fills that gap with a face. It's the "close this hole" operator - the thing you reach for constantly in manual mesh work and, apparently, the thing this pack needed enough to wrap as its own ComfyUI node.

Why it's here

Avatar Graph builds 2.5D interactive avatars out of a single character image: segment the image (its SAM node), turn each layer into a mesh, rig eye-blink and mouth-open shape keys on top, then hand the result to Avatech's live web viewer. Building those meshes programmatically - especially something like the plane-based eye/mouth geometry the README's demo templates use - inevitably leaves gaps that need capping, or edges that need connecting without a full re-triangulation. That's exactly what Edge Face Add is for.

It's worth saying plainly: this node, like its nineteen siblings in this batch, isn't in the README's own "Custom Nodes" table. That table documents the headline pieces (Create Mesh Layer, Mesh Modify Shape Key, Avatar Main Output, and so on). Nodes named Mesh_<ThingInBlenderCase> are a different, auto-generated layer - the repo's dev docs mention a generate_blender_types.py script that regenerates Blender operator bindings, and the class name here (Mesh_EdgeFaceAdd) maps directly onto Blender's own bpy.ops.mesh.edge_face_add. You're editing raw Blender topology inside a ComfyUI graph, not using a purpose-built avatar tool.

Inputs and outputs

Just one optional input, BPY_OBJ, and one BPY_OBJ output - no parameters to configure. That's consistent with how Blender's own version works: it doesn't take arguments either, it just acts on whatever vertices/edges are currently selected on the mesh object it's handed. The selection state travels with the BPY_OBJ itself, so this node needs to sit downstream of something that actually selected the boundary you want filled - a select-loop node, a prior extrude, or whatever left the right verts highlighted.

Installing Avatar Graph

Two routes. Through ComfyUI Manager, search "Avatar Graph" and install like anything else. Manually: cd ComfyUI/custom_nodes && git clone https://github.com/avatechai/avatar-graph-comfyui, then inside that folder python -m pip install -r requirements.txt, then restart. Heads up - the README's own manual-clone snippet points at avatechgg rather than avatechai for the git URL; that's an inconsistency in their own docs, use the canonical avatechai/avatar-graph-comfyui repo instead.

The install detail that actually bites people is Python version, not the git clone. This pack depends on bpy, Blender's Python API package, which only ships prebuilt wheels for specific Python versions - here, 3.10.x. A modern ComfyUI portable build on Python 3.11 or 3.12 will choke installing or importing it. On Mac/Linux, spin up a dedicated conda env (conda create --name comfyui python=3.10) rather than fighting your existing one. On Windows, the author sidesteps the whole problem by shipping a prebuilt ComfyUI + Python 3.10 zip just for this pack.

Once it's running, restart ComfyUI with --enable-cors-header (and --force-fp16 on Mac) if you want the live avatar preview talking to Avatech's hosted editor. Without it you still get full functionality, just no real-time panel - right-click Avatar Main Output and Save to export a .glb/.gltf instead.

Common issues

There's no model to download and no heavy runtime dependency beyond bpy itself, so most trouble here traces back to that Python pin, or to the CORS flag if the live preview isn't updating. The README also flags upfront that the node set and demo templates are still being iterated on - which tracks with how sparse the built-in descriptions are on nodes like this.

Because Edge Face Add only acts on the incoming selection, the most common non-bug you'll hit is "nothing happened": if the wrong (or no) vertices were selected upstream, you'll get silence rather than an error. Trace the selection state back through the graph before assuming the node itself is at fault.

Categoryblender

Inputs (1)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ