Mesh Edges Select Sharp
Grabbing hard-angle edges by threshold in Avatar Graph
- BPY_OBJ
- BPY_OBJ
Manually box-selecting every edge around a nose bridge or eyelid on a mesh you generated rather than modeled by hand is tedious and error-prone. Mesh Edges Select Sharp does it for you by angle: it walks every edge on the mesh, checks how steeply the two faces on either side of it bend, and selects the ones that bend more than a threshold you set. It's the kind of node you reach for right before telling Blender which edges deserve special treatment - sharp shading breaks, creases - without eyeballing selection by hand on geometry Avatar Graph built out of a segmented image.
How it works
This wraps Blender's mesh.edges_select_sharp operator directly, part of the pack's larger habit of exposing Blender's own mesh-editing operators as nodes rather than reinventing them. For every edge, it measures the angle between the normals of its two adjacent faces. If that angle exceeds sharpness, the edge gets added to the current selection - it's additive, extending whatever was already selected rather than replacing it, so if you want a clean read of just the sharp edges, deselect everything first upstream. Flat or gently curved regions stay untouched; corners, creases, and hard transitions get picked up.
The inputs and outputs that matter
BPY_OBJ- the mesh to scan.sharpness- the angle threshold, in radians, not degrees. Default is0.5235987..., which is 30°. The range runs from a fraction of a degree up to π (180°). Lower it to catch gentler bends too; raise it to only pick up the genuinely hard corners. If you're used to thinking in degrees, do the conversion before typing a value in - "60" here means something close to a full turn, not 60°.
Output is the same BPY_OBJ, now carrying an updated edge selection you can feed straight into something like Mesh Mark Sharp to actually flag what got selected.
How to install it
ComfyUI Manager, search "Avatar Graph" and install, or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
then pip install -r requirements.txt and restart. This is a bpy-backed node, so the pack's core constraint applies: Blender's bpy package only ships wheels for Python 3.10.x. On macOS/Linux that means a dedicated conda environment (conda create --name comfyui python=3.10) rather than layering it onto a newer Python you're already running; on Windows, Avatech ships a prebuilt Python-3.10 ComfyUI zip you install the pack on top of via Manager. For the live in-browser avatar preview at editor.avatech.ai, launch with --enable-cors-header (add --force-fp16 on Mac) - without it, everything still runs, you just export .glb/.gltf and preview elsewhere.
Common issues & troubleshooting
If the node fails to load at all, that's almost always the bpy Python-version mismatch, not this specific operator - check the ComfyUI startup console for an import error and confirm you're on a clean Python 3.10.x environment with requirements.txt installed without complaints. This is a recurring class of problem across every node in this pack, not something unique to edge selection.
If the selection comes back empty or grabs way more than expected, the near-universal culprit is the radians-vs-degrees mixup - a sharpness of 1.0 (about 57°) is a very different threshold than someone expecting 1.0 to mean "1 degree." Second most common cause: this operator adds to whatever's already selected, so if an earlier node in your graph left some unrelated edges selected, they'll still be there in the output alongside your genuinely sharp ones. If you need a clean result, make sure selection is cleared before this node runs.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| sharpnessopt | FLOAT | 0.520.0001745329209370539–3.141592741012573 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |