Nodes/Avatar Graph/Transform Edge Crease
ComfyUI Node

Transform Edge Crease

Crease values — the control that keeps subdivision from smoothing everything flat

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

Transform Edge Crease sets the crease value on the selected edges of your mesh - the attribute a Subdivision Surface modifier reads to decide which edges stay sharp when everything else gets smoothed. In plain terms: subdivide a character's geometry and the whole thing balloons into a soft marshmallow; crease the edges you actually care about and they hold their line. This node is how you stamp those values from inside ComfyUI.

It's the sibling of Transform_EdgeBevelweight - one controls the bevel, this controls the crease - and like its sibling it's a polish tool. Avatar Graph's core output is flat, textured planes, which don't need subdivision or creasing at all. Where this earns a place is the same place as bevel weight: the moment you build anything with real geometry, a rounded head, an accessory with a sharp rim. Crease marks which edges are meant to stay crisp.

How it works

An EditOps node wrapping bpy.ops.transform.edge_crease: deselect all, set your BPY_OBJ active, enter edit mode, run the operator, exit, pass the object back. The value input is the crease weight as a FLOAT. The wrapper exposes a -1 to 1 range (Blender's hard min/max), but the meaningful values live in 0–1: 0 clears the crease, 1 is a fully sharp edge. A subdivided mesh with a crease of 1 on its outline keeps that outline - that's the whole trick behind "smooth surface, crisp silhouette."

The remaining inputs (snap, release_confirm, use_accurate) are transform-tool noise; ignore them. Like all the edit-mode nodes in this pack, it acts on whatever is selected in the shared scene at that moment, so selection management upstream in your graph is what actually determines which edges get the crease.

Inputs that matter

  • BPY_OBJ - the mesh to operate on.
  • value - crease weight, 0–1. 1 = keep it sharp.

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

Installing it

Part of the Avatar Graph pack (Avatech AI). 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 requires Python 3.10.x or the pack won't import at all, and first launch downloads the SAM ViT-H checkpoint (~2.5 GB) to ComfyUI/models/sams plus two MediaPipe landmarker files.

Common issues

  • "No module named bpy" → Python 3.10.x. It's always the answer.
  • Crease values seem to do nothing → crease only matters if a Subdivision Surface modifier is actually running on that mesh. This node writes the attribute; the subdivision reads it. No modifier, no visible effect.
  • Wrong edges creased → selection again. The node doesn't take a selection input; whatever's selected when it runs is what gets stamped.
  • Scene resets between runs - do the whole model-build in one graph.

It's a quiet, precise tool. If you never subdivide, you'll never need it - but the day you smooth a mesh and watch your sharp edges dissolve, this is the node that saves you.

Categoryblender

Inputs (5)

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

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ