Mesh Mod Weighted Strength
Telling Blender's Weighted Normal modifier which faces win
- BPY_OBJ
- BPY_OBJ
This node only makes sense once you know what it's paired with, so let's start there: Blender has a "Weighted Normal" modifier that recomputes shading normals by giving more influence to some faces than others - normally you'd use it to keep beveled edges crisp while flat faces stay flat, instead of getting a mushy, over-smoothed look. But the modifier needs to know which faces should dominate, and that's what this operator sets. Mesh Mod Weighted Strength assigns (or reads) a per-face "strength" value that the modifier consults later in the stack.
What it is and why you'd reach for it
It's a direct wrap of Blender's own mesh.mod_weighted_strength operator, which means it's really a labeling step, not a visible deformation on its own - nothing moves when you run this node. You select faces, tag them WEAK, MEDIUM, or STRONG, and downstream (in a Weighted Normal modifier, if this mesh eventually gets one) those tags decide which faces' normals get more say when neighboring faces disagree. In the context of this pack's avatar-mesh pipeline, that's most useful on any generated mesh with mixed flat-and-curved regions - a nose bridge next to a cheek, a mouth corner next to a lip - where auto-generated normals tend to blur detail you'd rather keep sharp.
How it works
set is the mode switch. Turn it on and the node assigns your chosen face_strength to the selected faces. Leave it off and the operator instead behaves like a selector - it selects faces that already carry the strength value you specified, which is handy for checking or re-editing a strength assignment you made earlier without hunting through the mesh by eye.
The inputs and outputs that matter
Only two real fields:
set(boolean, default off) - assign mode vs. select-by-value mode, as above.face_strength- an enum ofWEAK,MEDIUM,STRONG. This is the value being assigned or searched for.
Output is the usual single BPY_OBJ, unchanged in shape but with face-strength data attached (or a different face selection active, depending on set).
How to install it
ComfyUI Manager: search Avatar Graph, install, restart. Manual install:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui
python -m pip install -r requirements.txt
Same hard requirement as every node in this pack: Python 3.10.x, because bpy only ships wheels for specific minor versions - the README states this outright, and it's not optional. Windows users can sidestep the whole problem with the pack's bundled embedded-Python-3.10 zip; everyone else, pin a conda environment before installing. Add --enable-cors-header (and --force-fp16 on Mac) to your ComfyUI launch command if you want the live 3D preview panel; without it the node still runs, you just don't get to eyeball the result in real time.
Common issues
The most common confusion with this node specifically: running it and seeing nothing change in your viewport. That's expected - it only writes metadata a Weighted Normal modifier reads later; if your mesh has no such modifier in its stack (and this pack's default pipeline generally doesn't add one automatically), the strength value you set has nowhere to be consumed yet. If you're chaining this in expecting a shading fix by itself, you want Mesh_NormalsMakeConsistent or Mesh_NormalsTools instead - this one is preparation for a modifier, not a shading fix on its own. Beyond that, the usual suspects apply: a bpy install failure traces back to the Python version almost every time, and this pack's README still carries an active "we're still making changes" warning, so double-check node behavior against a current workflow template if something seems off.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| setopt | BOOLEAN | false | — |
| face_strengthopt | COMBO | 3 options: WEAK, MEDIUM, STRONG |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |