Nodes/Avatar Graph/Mesh Bevel
ComfyUI Node

Mesh Bevel

Rounds sharp edges — most of its 20 fields you'll never touch

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Mesh Bevel
  • BPY_OBJ
  • BPY_OBJ
offset_type
offset0.00
profile_type
offset_pct0.00
segments1
profile0.50
affect
clamp_overlapfalse
loop_slidetrue
mark_seamfalse
mark_sharpfalse
material-1
harden_normalsfalse
face_strength_mode
miter_outer
miter_inner
spread0.10
vmesh_method
release_confirmfalse

This is Blender's real bpy.ops.mesh.bevel operator, auto-wrapped into a ComfyUI node - Avatar Graph generates a big chunk of its node list directly from Blender's own mesh API rather than writing custom logic per node, and Bevel is one of the more parameter-heavy examples of that. Don't let the ~20 fields intimidate you; nearly all of them are advanced fine-tuning that ships at sensible defaults, and the real reference for what each one does is Blender's own documentation, not this pack's README.

What it does

Bevel takes a sharp edge or vertex and rounds or chamfers it - replacing the hard corner with a small angled or curved facet. It's one of the most commonly used mesh-cleanup operations in Blender, and here it's exactly what you'd expect: applied to a selection on your Avatar Graph mesh, useful anywhere a perfectly sharp edge from a traced or generated outline looks too "cut with scissors" and you want a softer, more natural transition.

The inputs that actually matter to a beginner

  • BPY_OBJ (optional) - the mesh object.
  • offset_type - how the bevel amount is measured: OFFSET (a raw distance), WIDTH, DEPTH, PERCENT, or ABSOLUTE. Start with OFFSET.
  • offset - the bevel amount for most offset types (use offset_pct instead if you picked PERCENT).
  • segments (default 1) - how many facets the bevel is broken into. 1 gives you a flat chamfer (a single angled cut); higher numbers give a smoother, more rounded curve. This is the one people usually forget to raise and then wonder why their "rounded" edge still looks sharp.
  • profile (default 0.5) - shapes the curve of the bevel when segments > 1; 0.5 is a even, circular-ish arc.

Everything else - affect (vertices vs. edges), clamp_overlap, loop_slide, mark_seam/mark_sharp, material, harden_normals, face_strength_mode, miter_outer/miter_inner, spread, vmesh_method - are legitimate Blender bevel controls, but they're there because the node is a 1:1 wrap of the real operator, not because you need to understand all of them to get a working bevel. Leave them at default until you have a specific reason not to.

Output is the same BPY_OBJ, passed through for chaining.

How to install it

Via ComfyUI Manager: search "Avatar Graph" (avatar-graph-comfyui), install, restart. Manually:

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

The pack's hard blocker: bpy==3.6.0 is pinned in requirements.txt and only builds on Python 3.10.x. Windows users get a bundled Python 3.10 ComfyUI zip from the README; Mac/Linux users should build a dedicated conda environment (conda create --name comfyui python=3.10) rather than fighting an existing 3.11/3.12 setup. It's a heavier install overall - segment-anything, mediapipe, and OpenCV all come along.

Common issues & troubleshooting

Bevel looks flat/sharp even after setting an offset. You almost certainly need to raise segments above its default of 1 - a single segment is a flat chamfer, not a round.

"Operator poll() failed, context is incorrect." Standard Blender complaint for an invalid mesh object or an empty selection - check whatever feeds BPY_OBJ and confirm there's actually something selected by the time this node runs (it flips into Edit Mode automatically, runs, and flips back, so selection state needs to be correct going in).

Bevel amount looks wrong/tiny. Double check offset_type matches the field you're actually setting - if you're typing a value into offset_pct but offset_type is still OFFSET, that percentage value is being ignored. They're separate fields precisely because Blender's operator only reads one depending on the mode.

Categoryblender

Inputs (20)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
offset_typeoptCOMBO5 options: OFFSET, WIDTH, DEPTH, PERCENT, ABSOLUTE
offsetoptFLOAT0.000–1000000
profile_typeoptCOMBO2 options: SUPERELLIPSE, CUSTOM
offset_pctoptFLOAT0.000–100
segmentsoptINT11–1000
profileoptFLOAT0.500–1
affectoptCOMBO2 options: VERTICES, EDGES
clamp_overlapoptBOOLEANfalse
loop_slideoptBOOLEANtrue
mark_seamoptBOOLEANfalse
mark_sharpoptBOOLEANfalse
materialoptINT-1-1–2147483647
harden_normalsoptBOOLEANfalse
face_strength_modeoptCOMBO4 options: NONE, NEW, AFFECTED, ALL
miter_outeroptCOMBO3 options: SHARP, PATCH, ARC
miter_inneroptCOMBO2 options: SHARP, ARC
spreadoptFLOAT0.100–1000000
vmesh_methodoptCOMBO2 options: ADJ, CUTOFF
release_confirmoptBOOLEANfalse

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ