Mesh Extrude Context
Blender's E-key smart extrude, scripted into a node
- BPY_OBJ
- BPY_OBJ
If you've used Blender at all, you've pressed E. Mesh Extrude Context wraps bpy.ops.mesh.extrude_context, the operator behind that shortcut - the "smart" extrude that looks at whatever's currently selected (a vertex, an edge, a face, a whole region) and automatically runs the right specific extrude variant for it, rather than making you pick "extrude vertices" versus "extrude faces" by hand.
How it works
Blender actually has several distinct extrude operators under the hood - extrude vertices, extrude edges, extrude faces along normals, extrude a region - and extrude_context is the dispatcher that inspects your current selection and calls the appropriate one. Extruding a selected face pushes out new geometry along its normal; extruding a selected edge pulls out a new edge; extruding a vertex gives you a new connected vertex. In an Avatar Graph pipeline, this is the tool for pushing flat, image-derived geometry into something with actual depth or added detail - building out a mesh piece rather than just editing its existing surface.
The inputs and outputs that matter
use_normal_flip(defaultfalse) - flips the direction of the extrusion's resulting normal, for when the default direction comes out inside-out relative to what you wanted.use_dissolve_ortho_edges(defaultfalse) - dissolves edges that end up perpendicular to the extrusion direction, which tends to produce a cleaner result on region extrudes rather than leaving redundant edge loops behind.mirror(defaultfalse) - applies the extrusion symmetrically if mirror modifiers or symmetry settings are active.
Output is the same BPY_OBJ, with the new extruded geometry now part of the mesh.
How to install it
ComfyUI Manager - search "Avatar Graph" and install - or manually: cd ComfyUI/custom_nodes && git clone https://github.com/avatechai/avatar-graph-comfyui, cd avatar-graph-comfyui && pip install -r requirements.txt, then restart. The pack needs Python 3.10.x because it runs Blender as a library (bpy), which only publishes wheels for that exact version - a newer environment fails this install, or the blender-category nodes never appear. macOS/Linux: dedicated conda env at 3.10. Windows: Avatech's prebuilt Python-3.10 ComfyUI zip, pack installed through Manager afterward.
Common issues & troubleshooting
RuntimeError: ... poll() failed, context is incorrect. This is Edit Mode's core interactive extrude, and it needs a real selection to act on - no selection upstream, and Blender refuses to run it rather than doing something unpredictable. This is the single most common failure across every Edit-Mode operator this pack exposes; make sure a selection node runs immediately before it.
Note: this operator only extrudes - it doesn't move the new geometry anywhere. Interactively, E is usually followed immediately by a mouse-drag to actually push the new geometry somewhere; that positional move is a separate transform step, not something extrude_context itself handles. If your extruded geometry lands exactly on top of the original (zero-length extrusion), that's expected - you likely need a following transform/move step in the graph to actually displace it.
Not in the README's documented table - like the rest of the pack's blender-category nodes, it's a low-level operator wrapper auto-generated from Blender's operator registry via generate_blender_types.py, not one of the roughly seven higher-level Avatech nodes covered by hand. Blender's own manual entry on extrude tools covers the full range of variants this dispatcher can invoke.
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 | — |