Mesh Extrude Region
Extrude without the move bolted on
- BPY_OBJ
- BPY_OBJ
Most of Blender's extrude tools are actually two operators stapled together: create the new geometry, then move it. This node is just the first half. It duplicates your selection and connects the new geometry to the old - new faces, new edges, whatever the selection type calls for - but the result sits exactly on top of the original, unmoved. In Blender this is normally invisible, because it's immediately followed by a translate; exposed on its own like this, it's useful when you want full control over what happens to the new geometry next, wiring it into something other than a plain move.
The two extra flags that make this one different
Unlike most of its siblings in this batch, this node exposes real settings beyond the mesh object:
- use_normal_flip (default
false) - flips which direction the extrude's normal-based logic treats as "outward," relevant for downstream operators or exports that care about normal direction. - use_dissolve_ortho_edges (default
false) - dissolves away newly created edges that end up perfectly flat (forming no actual bend relative to their neighboring faces), keeping the resulting topology tidier instead of littering it with edges that don't do anything. - mirror (default
false) - mirrors the extrude offset across the local X axis, for symmetric mesh editing.
Combined with BPY_OBJ in and out, that's the full schema. It's a direct wrap of Blender's bpy.ops.mesh.extrude_region - one of twenty low-level Blender operator wraps in this pack 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 describe regenerating Blender operator bindings via a generate_blender_types.py script, which is exactly where this naming pattern comes from.
Where it fits
Avatar Graph, from Avatech AI, turns a single character image into a 2.5D interactive avatar - segmentation, per-layer mesh generation, shape-key rigging for blink and mouth movement, then a live viewer hosted by Avatech. Reaching for the bare "create geometry, no move" version makes sense if you're chaining it into something more deliberate than a fixed offset - for instance, feeding the freshly extruded selection into a shrink/fatten or manifold-aware step instead of a plain translate.
Installing Avatar Graph
ComfyUI Manager: search "Avatar Graph," install, restart. 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. Worth flagging - the README's own manual-install snippet clones from avatechgg, a different org than the canonical avatechai/avatar-graph-comfyui. Use the URL above.
What actually decides whether install succeeds is Python version, not the clone. bpy, this pack's core dependency, only ships wheels for specific Python builds - 3.10.x here. A newer ComfyUI on 3.11/3.12 will fail to install or import it. Conda is the clean fix on Mac/Linux (conda create --name comfyui python=3.10); on Windows, the author ships a dedicated prebuilt ComfyUI + Python 3.10 zip rather than expecting a retrofit.
After that, restart with python main.py --enable-cors-header (Mac: add --force-fp16) for the live avatar preview to reach Avatech's hosted editor. Skip it and the pack still fully works - export manually via right-click → Save on Avatar Main Output instead.
Common issues
No models to download, nothing unusual beyond bpy - most install pain is the Python pin, most preview pain is the missing CORS flag. The README's own warning that nodes and templates are still changing is a fair explanation for why documentation on something this specific doesn't exist.
The thing to actually remember about this node: it doesn't move anything by itself, by design - that's the whole distinction from Mesh_ExtrudeRegionMove. If your extruded geometry looks identical to before you ran it, that's expected; you need a transform step (or a node like the shrink/fatten variant) after it to see a visible change.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| use_normal_flipopt | BOOLEAN | false | — |
| use_dissolve_ortho_edgesopt | BOOLEAN | false | — |
| mirroropt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |