Nodes/Avatar Graph/Mesh Extrude Manifold
ComfyUI Node

Mesh Extrude Manifold

The extrude that won't leave junk geometry at corners

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Mesh Extrude Manifold
  • BPY_OBJ
  • BPY_OBJ

A plain region extrude, run at a corner or an open mesh boundary, can leave you with non-manifold junk - doubled-up faces, loose internal edges, geometry that technically exists but breaks assumptions the rest of your pipeline makes about the mesh being "clean." Extrude Manifold, added to Blender in 2.9, is the smarter version: it auto-merges and dissolves that leftover geometry as it extrudes, so corners and boundaries come out clean instead of tangled. It's the operator to reach for specifically at those tricky spots, over the plain region extrude.

Why it matters in this pack

It's a direct wrap of Blender's bpy.ops.mesh.extrude_manifold, one of twenty low-level Blender operator wraps this pack ships that don't appear in the README's own documented node table (that one covers the headline pieces: Create Mesh Layer, Mesh Modify Shape Key, Avatar Main Output). The repo's dev notes mention a generate_blender_types.py script for regenerating Blender operator bindings, which is where this naming convention comes from.

Avatar Graph, from Avatech AI, builds 2.5D interactive avatars out of a single character image - segmentation, per-layer mesh generation, shape-key rigging for blink and mouth movement, then a live viewer hosted by Avatech. Non-manifold geometry is a genuine problem for anything downstream that expects a well-formed mesh - shape key deformation, texture unwrapping, real-time playback in a web viewer - so having the "safe" extrude available as its own node is a reasonable thing for this pack to expose, given it's already generating and repairing meshes programmatically.

Inputs and outputs

BPY_OBJ in, BPY_OBJ out - no other parameters exposed in the schema. As with the rest of this family, in Blender the extrude is normally paired with a live-dragged move immediately after; with no offset value here, treat this node as producing the manifold-safe extruded geometry in place, and follow it with a separate transform step if you need actual displacement. Which geometry extrudes is entirely a function of the selection state already carried on the incoming BPY_OBJ.

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 from inside that folder, then restart. One thing to watch - the README's own manual-install command clones from avatechgg, not avatechai; use the canonical URL above, matching the Manager listing and the rest of the repo.

What actually gates a successful install is Python version. bpy, the Blender Python API this pack depends on, only ships wheels for specific Python builds - you need 3.10.x exactly. A newer ComfyUI on Python 3.11/3.12 will fail to install or load it. Conda handles this cleanly on Mac/Linux (conda create --name comfyui python=3.10); on Windows, the author sidesteps the whole issue by shipping a dedicated prebuilt ComfyUI + Python 3.10 zip.

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 everything still works - you'd export via right-click → Save on Avatar Main Output instead.

Common issues

No model downloads, nothing unusual beyond bpy - install trouble is almost always that Python pin, preview trouble almost always the missing CORS flag. The README's own note that nodes and templates are still evolving is a fair explanation for the total lack of built-in documentation on something this specific.

One thing genuinely worth knowing about this node versus a plain region extrude: it's the safer default at mesh corners and open boundaries specifically. If you've been getting weird shading artifacts or stray internal faces after extruding near a boundary with Mesh_ExtrudeRegion or Mesh_ExtrudeRegionMove, swapping in this node at that spot is the direct fix - that's the entire reason Blender added a separate operator for it.

Categoryblender

Inputs (1)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ