Mesh Polybuild Face At Cursor
Blender's click-to-add-a-face tool, wrapped as a node
- BPY_OBJ
- BPY_OBJ
Poly Build in Blender is basically a quick-retopology tool: click on empty space near existing geometry and it fills in a new face using nearby vertices and edges, letting you build up a mesh point-and-click rather than through formal extrude/fill commands. This node is that "add a face" action from the Poly Build tool.
What it is and why you'd reach for it
It's not part of Avatar Graph's documented rigging pipeline (Create Mesh Layer → Modify Shape Key → Create Shape Flow → Avatar Main Output) - it's one of the many nodes this pack auto-generates by wrapping essentially every operator in Blender's bpy.ops.mesh namespace, a mapping the README's generate_blender_types.py script keeps current. In the Blender UI, this operator reads your mouse position in the viewport to decide where the new face goes and which nearby vertices/edges it connects to. This node's schema has no cursor or location input at all, so headless in a ComfyUI graph there's no way to specify a target position - worth knowing before you drop this into a graph expecting controllable, repeatable results.
How it works
It looks at geometry near a target point and fills a new face using whatever vertices and edges are close enough to connect meaningfully, similar to Blender's "F" fill shortcut but driven by proximity to a point rather than an explicit selection.
The inputs and outputs that matter
create_quads(boolean, default on) - prefers building a 4-sided face over a triangle where the geometry allows it, which generally gives cleaner topology for later deformation work.mirror(boolean) - mirrors the operation across the mesh's symmetry setting, if configured.use_proportional_editplusproportional_edit_falloff(SMOOTH,SPHERE,ROOT,INVERSE_SQUARE,SHARP,LINEAR,CONSTANT,RANDOM) andproportional_size- Blender's standard proportional-editing controls, letting the effect taper into surrounding geometry.use_proportional_connected/use_proportional_projected- restrict falloff to connected topology, or project it through space.release_confirm/use_accurate- interaction-timing flags carried over from the interactive tool, largely inert without live mouse input.
Output is the pack's standard single BPY_OBJ.
How to install it
ComfyUI Manager: search Avatar Graph, install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui
python -m pip install -r requirements.txt
Because the pack runs on bpy - Blender as a pip package, which only ships wheels for specific Python minor versions - the README is explicit: Python 3.10.x, exactly. Windows users get a bundled embedded-Python-3.10 zip to avoid the mismatch; macOS/Linux users should pin a conda create --name comfyui python=3.10 environment. Add --enable-cors-header (--force-fp16 on Mac) to your launch command for the live avatar preview panel - skip it and the graph still runs, minus the real-time viewer.
Common issues
If face placement looks unpredictable, that's the nature of this node without a cursor input - it isn't broken, it just has no target. For deterministic face creation in a scripted graph, building faces from an explicit vertex selection with a fill operation gets you a repeatable result this cursor-driven tool won't. And, as with every node in this pack, if bpy fails to install, check your Python version before assuming a dependency is broken - 3.10.x is the whole requirement.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| create_quadsopt | BOOLEAN | true | — |
| mirroropt | BOOLEAN | false | — |
| use_proportional_editopt | BOOLEAN | false | — |
| proportional_edit_falloffopt | COMBO | 8 options: SMOOTH, SPHERE, ROOT, INVERSE_SQUARE, SHARP, LINEAR, +2 | |
| proportional_sizeopt | FLOAT | 1.009.999999974752427e-7–999999995904 | — |
| use_proportional_connectedopt | BOOLEAN | false | — |
| use_proportional_projectedopt | BOOLEAN | false | — |
| release_confirmopt | BOOLEAN | false | — |
| use_accurateopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |