Nodes/Avatar Graph/Object Vertex Group Normalize All
ComfyUI Node

Object Vertex Group Normalize All

The Weight Pass Finisher

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

After a heavy editing session your vertex groups end up in all kinds of states - weights that don't sum to 1, leftover scraps, values that only make sense to the mesh they were painted on. Object Vertex Group Normalize All is the sweep-up pass: it normalizes every group on the object at once, so each vertex's weights land back in the healthy "adds up to 1" state that deformation code expects.

It's the node you throw at the end of a weight pipeline before export. If you only remember one of the normalize pair, remember this one.

How it works

An auto-generated wrapper around Blender's bpy.ops.object.vertex_group_normalize_all. BPY_OBJ in, edit mode, operator runs, same object out. Two inputs shape its behavior:

  • group_select_mode - a plain text field feeding Blender's enum; type ALL or ACTIVE. ALL normalizes every group, ACTIVE limits it to the active one.
  • lock_active - default true. When on, the active group is skipped. That's the guard rail: if you're mid-pass and the active group already looks right, it won't get touched.

The lock_active default is worth respecting. The obvious workflow is: make the group you've already hand-tuned active, run Normalize All, and it comes through untouched while everything else gets corrected.

Output is the same BPY_OBJ, so it slots in right before the final export or the Shape Flow setup.

Installing it

It ships in Avatar Graph:

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 get "Avatar Graph" via ComfyUI Manager. Pack-wide install notes: bpy==3.6.0 needs Python 3.10 (README suggests a dedicated conda env), and bpy is a full headless Blender, so the pip install is a heavyweight step, not a quick one.

Common issues

The classic failure is scope. If you typed ACTIVE into group_select_mode expecting "all groups," you normalized exactly one group and wondered why nothing else changed. Check the mode, and check whether lock_active is silently protecting the group you meant to fix.

And the standing Avatar Graph rule: no BPY_OBJ wired in, no-op. This node edits a real Blender mesh from an upstream node like Create Mesh Layer; it has no effect on a bare image.

Categoryblender

Inputs (3)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
group_select_modeoptB_ENUM
lock_activeoptBOOLEANtrue

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ