Nodes/Avatar Graph/Transform Edge Bevelweight
ComfyUI Node

Transform Edge Bevelweight

Softening edges with bevel weights, one float at a time

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Transform Edge Bevelweight
  • BPY_OBJ
  • BPY_OBJ
value0.00
snapfalse
release_confirmfalse
use_accuratefalse

Transform Edge Bevelweight sets the bevel weight of the selected edges on your mesh. In Blender that's the number a Bevel modifier reads to decide which edges get rounded and how much - paint a 0.0–1.0 weight onto edges, and the bevel follows it. As an Avatar Graph node it's your way of doing that from inside a graph instead of a 3D viewport.

Why would you care in this pack? Avatar Graph's characters are flat, texture-mapped planes stitched together into mesh layers. If you're adding any geometry with actual thickness - a prop, a 3D piece of hair, an accessory - bevel weights are how you stop it looking like a paper cutout. A small bevel weight on the visible silhouette edges kills the razor-sharp look that screams "generated." It's a polish node, but polish is what separates a rig that looks like an asset from one that looks like a flat cutout.

How it works

This is an EditOps node: the wrapper deselects everything, sets your BPY_OBJ active, enters edit mode, runs bpy.ops.transform.edge_bevelweight, then returns to object mode and hands the object back. The value input is a FLOAT - the weight to stamp onto the selected edges. The widget shows a range of -1 to 1 (that's Blender's hard min/max leaking through the auto-generated wrapper), but bevel weights are meaningful in the 0–1 range: 0 means untouched, 1 means fully beveled.

The other inputs are the standard transform-tool boilerplate: snap, release_confirm, use_accurate. You can ignore all three. There's no mirror here, so if you want symmetric bevels you set weights on both sides yourself or rely on Blender's mirror modifier elsewhere in the pipeline.

Inputs that matter

  • BPY_OBJ - the mesh to operate on.
  • value - the bevel weight (0–1) to apply to selected edges.

That's the whole interface. Output: BPY_OBJ - the modified mesh for the next node.

The catch, and it's the same one across this whole generated family: the node operates on whatever is selected in the shared Blender scene when it runs. The wrapper doesn't give you a selection input, so you need the selection to already be where you expect - typically by chaining after a mesh-select node or setting it up earlier in the graph.

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 fails to install the pack), and the 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, always the first suspect.
  • Bevel weights don't show up visually → weights only do something when a Bevel modifier is set to use them. The node just writes the attribute; the bevel happens elsewhere. Set value to 0 to clear edges.
  • It beveled the wrong edges → selection. The node acts on the current selection; sort that out earlier in the chain.
  • Scene resets between runs - build and bevel in a single graph pass.

If your avatars are strictly flat planes, you can skip this. The moment you add any 3D geometry, it's the difference between "cutout" and "asset."

Categoryblender

Inputs (5)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
valueoptFLOAT0.00-1–1
snapoptBOOLEANfalse
release_confirmoptBOOLEANfalse
use_accurateoptBOOLEANfalse

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ