Nodes/Avatar Graph/Mesh Extrude Context Move
ComfyUI Node

Mesh Extrude Context Move

The smart extrude behind Blender's E key

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

In Blender, hitting E doesn't call one single extrude operator - it calls a "smart" one that looks at what you've got selected and picks the right extrude behavior automatically: verts extrude as verts, an edge selection extrudes as edges, a face selection extrudes as faces. That smart dispatcher is exactly what this node wraps. It's the most general-purpose extrude in this whole batch, and the one to reach for by default if you don't specifically need one of the more targeted variants (individual-element extrude, shrink/fatten, manifold-safe, and so on) also shipped in this pack.

Where it fits

Avatar Graph, from Avatech AI, turns a single character image into a 2.5D interactive avatar: segment it, generate a mesh per layer, rig eye-blink and mouth-open motion with shape keys, then stream the result to Avatech's live web viewer. Building or repairing that geometry by hand - say, pulling a bit of extra depth out of a flat plane mesh, or extending an eye socket - is exactly what extrude nodes are for. This one, like its nineteen siblings, doesn't appear in the README's documented node table; those cover the headline pieces (Create Mesh Layer, Mesh Modify Shape Key, Avatar Main Output). This family is a separate, auto-generated layer instead - the repo mentions a generate_blender_types.py script for regenerating Blender operator bindings, and this node's name lines up directly with bpy.ops.mesh.extrude_context_move.

Inputs and outputs

Just BPY_OBJ in, BPY_OBJ out - no exposed numeric controls at all. That's worth flagging explicitly: in Blender, the "Move" part of this operator is normally driven live by your mouse drag (or a follow-up transform value) right after the extrude fires. Here, with no offset or vector parameter in the schema, the node has nothing to move the new geometry by on its own - treat it as creating the extruded geometry in place, and pair it with a separate transform step (or one of this pack's own workflow templates, which chain these operators together) if you need visible displacement out of it.

As with the rest of the family, "what gets extruded" is entirely determined by the selection state riding along on the incoming BPY_OBJ - set it with a selection node or inherit it from whatever ran previously in the graph.

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. One catch - the README's own manual-install line clones from avatechgg, a different org than the canonical avatechai/avatar-graph-comfyui repo used everywhere else including their Manager listing. Use the URL above.

The real install blocker is Python version, not the clone. This pack needs bpy, Blender's Python API, and bpy only ships wheels for specific Python builds - 3.10.x here. On a modern ComfyUI running Python 3.11 or 3.12, expect bpy to fail outright. Conda is the simplest workaround on Mac/Linux (conda create --name comfyui python=3.10); on Windows the author sidesteps it entirely by shipping a dedicated prebuilt ComfyUI + Python 3.10 zip.

Once it's running, launch with python main.py --enable-cors-header (Mac: add --force-fp16) for the live preview to talk to Avatech's hosted editor. Without it, the pack still works - you just export via right-click → Save on Avatar Main Output instead of watching a live viewer.

Common issues

No model weights, nothing exotic beyond bpy itself - most install pain is that Python pin, and most preview pain is the missing CORS flag. The README's own note that nodes and templates are still changing is a fair explanation for the blank descriptions across this entire family.

Specific to this node: since there's no offset exposed, don't expect anything to visibly move on its own. If your extruded geometry looks like it's stacked directly on top of the original, that's expected behavior given the schema - you need a following transform step to actually push it somewhere.

Categoryblender

Inputs (1)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ