Nodes/Avatar Graph/Transform Vertex Warp
ComfyUI Node

Transform Vertex Warp

Bend a Mesh by View Angle

By avatechai·Created 3 years ago·Updated 2 years ago· 265
Transform Vertex Warp
  • BPY_OBJ
  • viewmat
  • center
  • BPY_OBJ
warp_angle6.28
offset_angle0.00
min-1.00
max1.00

Transform Vertex Warp is the oddest of the Avatar Graph transform nodes, and honestly the least useful for the standard avatar flow - but it's a genuinely interesting operator, so it's worth knowing what it does before you ignore it. It wraps Blender's transform.vertex_warp, which bends a mesh's vertices around a center point based on their angle as seen from a given viewpoint. Imagine drawing a radial "fan" through the mesh and rotating each spoke a different amount by how far around it sits. That's the vibe.

How it works

The node enters edit mode and calls bpy.ops.transform.vertex_warp() with your settings. The inputs:

  • warp_angle - how much the warp bends. The default is 6.283185, which is 2π - a full circle of warp.
  • offset_angle - where the warp starts around the fan.
  • min / max - the range of vertices affected. Defaults of -1 and 1 frame the region the warp acts on; stretch them to widen the effect.
  • viewmat - a 16-value matrix describing the viewpoint. This is the "as seen from" part of the operation; it's what makes the warp view-dependent. Leave it unless you know what you're doing.
  • center - a 3-value vector for the warp's center pivot. This is the one you'll actually tune.

Output is BPY_OBJ, unchanged except for the warp, ready to chain on.

Do you need it?

In the avatar pipeline, honestly, probably not. The workflow wants clean, texture-safe mesh layers, and Vertex Warp's whole job is to twist geometry into an angle-dependent curve - more at home sculpting a fin, a petal, or an abstract shape than shaping a face. Where it can earn its keep: giving a flat hair or cape layer a subtle "caught in a breeze" curve, or bending a fringe into an arc. If a demo workflow ever contains it and it's making the mesh go weird, bypass it - the mesh just passes through.

Installing

Vertex Warp ships in the Avatar Graph pack (avatechai/avatar-graph-comfyui), pinned to bpy==3.6.0 (Python 3.10):

conda create --name comfyui python=3.10
conda activate comfyui

Install via 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 with python main.py --enable-cors-header for live preview. No per-node downloads - the pack's only model download is the SAM segmentation model for the segmentation stage.

Categoryblender

Inputs (7)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
warp_angleoptFLOAT6.28-3.402823466385289e+38–3.402823466385289e+38
offset_angleoptFLOAT0.00-3.402823466385289e+38–3.402823466385289e+38
minoptFLOAT-1.00-3.402823466385289e+38–3.402823466385289e+38
maxoptFLOAT1.00-3.402823466385289e+38–3.402823466385289e+38
viewmatoptB_VECTOR16
centeroptB_VECTOR3

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ