Nodes/Avatar Graph/Object Vertex Group Normalize
ComfyUI Node

Object Vertex Group Normalize

Make a Single Group's Weights Add Up to One

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Object Vertex Group Normalize
  • BPY_OBJ
  • BPY_OBJ

Normalizing a vertex group means rescaling its weights so they sum to 1 across the mesh. Why bother? Because after you've been assigning, painting, and smoothing weights, they drift - a vertex ends up at 0.6 when it should be 1.0, and the avatar's deformations go subtly wrong where they meet. Object Vertex Group Normalize fixes that for the active group, and that focus is the whole personality of this node.

In the Avatar Graph pipeline, where the eyes and mouth are separate shape-key-driven meshes, a single slightly-off group is often the difference between a blink that looks right and a blink that looks haunted.

How it works

It's a thin auto-generated wrapper around Blender's bpy.ops.object.vertex_group_normalize. BPY_OBJ in, edit mode, operator runs, same object out. That's the entire input list - there are no knobs. What you control is which group gets normalized, and that's decided by what's active on the object at that moment.

That's the thing to internalize: this node normalizes the active vertex group, nothing else. If the active group isn't the one you mean, this node is a silent no-op on the group you cared about. Wire in an Object Vertex Group Set Active node beforehand to point it at the right group.

Output is the same BPY_OBJ, so it chains cleanly into weight work downstream.

Installing it

It rides in the Avatar Graph pack:

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 ComfyUI, or install "Avatar Graph" from ComfyUI Manager. Same pack-wide notes apply: bpy==3.6.0 requires Python 3.10 (dedicated conda env per the README), and bpy is a several-hundred-MB download.

Common issues

"I ran Normalize and the weights didn't change." Almost always an active-group problem - you normalized a group with no weights on it, or the wrong one entirely. Double-check the object and the active group.

If you want every group fixed in one go, you want the sibling node, Object Vertex Group Normalize All, not this one. This node is deliberately surgical.

Categoryblender

Inputs (1)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ