Nodes/Avatar Graph/Transform Edge Slide
ComfyUI Node

Transform Edge Slide

Sliding edges along surfaces without tearing your UVs apart

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Transform Edge Slide
  • BPY_OBJ
  • snap_elements
  • snap_point
  • BPY_OBJ
value0.00
single_sidefalse
use_evenfalse
flippedfalse
use_clamptrue
mirrorfalse
snapfalse
use_snap_projectfalse
snap_target
use_snap_selftrue
use_snap_edittrue
use_snap_nonedittrue
use_snap_selectablefalse
correct_uvtrue
release_confirmfalse
use_accuratefalse

Transform Edge Slide is probably the most genuinely useful single node in the transform family, and the reason is right there in the last input: correct_uv, which defaults to true. It wraps Blender's bpy.ops.transform.edge_slide - slide selected edges along the faces they belong to - and because Avatar Graph's meshes are texture-mapped planes, an edge move that keeps the UVs intact is the difference between "moved a line" and "resmearing the whole texture."

In Blender, edge slide is the tool you use to adjust topology without changing the overall shape: nudge an edge loop forward or back, tighten a mouth, widen a nostril, all while the surrounding geometry stays put. In the avatar pipeline that's morph-target territory - the same kind of vertex adjustment that becomes a shape key the editor later animates. It's the least flashy transform and the one you'll reach for most.

How it works

An EditOps node: deselect all, set your BPY_OBJ active, enter edit mode, run the operator, return to object mode, pass the object back. The core input is value, a FLOAT in the -10 to 10 range (the auto-generated wrapper's window) - effectively how far along the adjacent faces the edges slide. Negative slides one way, positive the other.

The controls that matter for real work:

  • use_even - keep edge spacing even while sliding. On for topology where you want a clean, regular loop; off when you want to push an edge close to a neighbor.
  • flipped - slide toward the "other" end of the edge loop.
  • use_clamp (default true) - stop the slide at the end of the available face range instead of overshooting. Leave it on; it's what keeps the operation sane.
  • correct_uv (default true) - keep UVs glued to the geometry as it slides. This is the one that saves your textures, and the reason this node is friendlier than raw vertex moves.
  • single_side - slide only one side of the edge, for asymmetric tweaks.

The rest - mirror, the whole snap/snap_elements/snap_target block, snap_point - is Blender's transform-tool furniture. Ignore it until you have a specific snapping need.

Inputs that matter

BPY_OBJ, value, use_even, use_clamp, correct_uv. That's the whole daily-driver list.

Output: BPY_OBJ - the modified mesh for the next node.

Installing it

Part of the Avatar Graph pack. ComfyUI Manager → search "Avatar Graph", or:

cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui && python -m pip install -r requirements.txt

Restart after. Pack gotchas: bpy==3.6.0 needs Python 3.10.x (a 3.11+ env breaks the pack's import), and first launch downloads the SAM ViT-H model (~2.5 GB) to ComfyUI/models/sams plus two MediaPipe landmarker files.

Common issues

  • "No module named bpy" → Python 3.10.x. Standard answer for this pack.
  • Texture smears after the slidecorrect_uv got turned off. Flip it back on; that's the feature's whole job.
  • Slide goes too far / nowhere → respect use_clamp. With clamping off you can push an edge past the point the mesh can represent, and it wraps weirdly.
  • Edges not sliding at all → selection. The node operates on the current selection in the shared scene; make sure the edges you mean are selected upstream.
  • Scene resets between runs - build the mesh and slide it in a single graph.

If you pick one transform node to actually learn in this pack, make it this one. Small, precise, texture-safe - the workhorse hiding behind a boring name.

Categoryblender

Inputs (19)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
valueoptFLOAT0.00-10–10
single_sideoptBOOLEANfalse
use_evenoptBOOLEANfalse
flippedoptBOOLEANfalse
use_clampoptBOOLEANtrue
mirroroptBOOLEANfalse
snapoptBOOLEANfalse
snap_elementsoptB_ENUM_SET
use_snap_projectoptBOOLEANfalse
snap_targetoptCOMBO4 options: CLOSEST, CENTER, MEDIAN, ACTIVE
use_snap_selfoptBOOLEANtrue
use_snap_editoptBOOLEANtrue
use_snap_noneditoptBOOLEANtrue
use_snap_selectableoptBOOLEANfalse
snap_pointoptB_VECTOR3
correct_uvoptBOOLEANtrue
release_confirmoptBOOLEANfalse
use_accurateoptBOOLEANfalse

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ