Transform Edge Crease
Crease values — the control that keeps subdivision from smoothing everything flat
- BPY_OBJ
- BPY_OBJ
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.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| valueopt | FLOAT | 0.00-1–1 | — |
| snapopt | BOOLEAN | false | — |
| release_confirmopt | BOOLEAN | false | — |
| use_accurateopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |