Nodes/Avatar Graph/Mesh Polybuild Transform At Cursor
ComfyUI Node

Mesh Polybuild Transform At Cursor

Grab-the-nearest-vertex, without a cursor to grab with

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Mesh Polybuild Transform At Cursor
  • BPY_OBJ
  • BPY_OBJ
mirrorfalse
use_proportional_editfalse
proportional_edit_falloff
proportional_size1.00
use_proportional_connectedfalse
use_proportional_projectedfalse
release_confirmfalse
use_accuratefalse

Poly Build in Blender isn't only for adding geometry - click and drag on an existing vertex or edge and it grabs the nearest one for you to move, no explicit selection needed first. That's what this node wraps: the "grab whatever's closest to the cursor" half of the 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 under Blender's bpy.ops.mesh namespace, kept current by the README's generate_blender_types.py script. The interactive version relies entirely on your mouse position to decide which vertex or edge counts as "nearest" and to drive the resulting move. This node's schema exposes no cursor or location input, so headless in a graph there's no way to tell it what to grab.

How it works

It identifies the mesh element closest to a target point and prepares it for a transform, the same "select-by-proximity" logic behind Poly Build's click-to-grab interaction in the viewport.

The inputs and outputs that matter

The same proportional-editing option set shared by several other Polybuild nodes in this pack:

  • mirror (boolean) - mirrors the operation across the mesh's symmetry setting, if one exists.
  • use_proportional_edit plus proportional_edit_falloff (SMOOTH, SPHERE, ROOT, INVERSE_SQUARE, SHARP, LINEAR, CONSTANT, RANDOM) and proportional_size - Blender's standard falloff controls for tapering an edit into surrounding geometry.
  • use_proportional_connected / use_proportional_projected - restrict that falloff to connected topology, or project it through space.
  • release_confirm / use_accurate - interaction-timing flags carried over from the interactive tool.

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 this pack runs on bpy - Blender packaged as a pip module, which only ships wheels for specific Python minor versions - the README is direct: you need Python 3.10.x. Windows users get a bundled embedded-Python-3.10 zip made for exactly this reason; macOS/Linux users should pin a conda create --name comfyui python=3.10 environment before installing anything. Restart with --enable-cors-header (--force-fp16 too on Mac) for the live avatar preview panel; without it, the graph still runs, minus the real-time viewer.

Common issues

If you were expecting this node to reliably grab a specific vertex for a scripted transform, it won't - with no cursor input, it has no consistent notion of "nearest." For a controllable, repeatable transform in a scripted graph, select the element explicitly upstream and apply a standard transform operator instead of relying on this cursor-driven tool. As with the whole pack, a failed bpy install almost always traces back to the Python version, not a broken dependency - verify python --version before digging further.

Categoryblender

Inputs (9)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
mirroroptBOOLEANfalse
use_proportional_editoptBOOLEANfalse
proportional_edit_falloffoptCOMBO8 options: SMOOTH, SPHERE, ROOT, INVERSE_SQUARE, SHARP, LINEAR, +2
proportional_sizeoptFLOAT1.009.999999974752427e-7–999999995904
use_proportional_connectedoptBOOLEANfalse
use_proportional_projectedoptBOOLEANfalse
release_confirmoptBOOLEANfalse
use_accurateoptBOOLEANfalse

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ