Nodes/Avatar Graph/Object Vertex Group Mirror
ComfyUI Node

Object Vertex Group Mirror

Mirroring weight paint so you don't hand-paint both sides

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Object Vertex Group Mirror
  • BPY_OBJ
  • BPY_OBJ
mirror_weightstrue
flip_group_namestrue
all_groupsfalse
use_topologyfalse

If you've ever weight-painted a symmetric character by hand, you know the tedium this node exists to kill. Object Vertex Group Mirror wraps bpy.ops.object.vertex_group_mirror, which mirrors vertex-group weights across the mesh (typically the X axis) and, optionally, flips group names between left/right suffixes - so weighting one side of a face rig and mirroring it gives you a matched other side for free.

How it works

Vertex groups drive deformation - which bones, shape keys, or modifiers affect which vertices, and by how much. For a symmetric character, you'd normally have to paint matching weights on both sides by hand, which is slow and easy to get slightly wrong. This operator instead takes the weights (and group names, if they follow a .L/.R naming convention) from one side and copies a mirrored version onto the other, directly on the mesh's own topology or geometrically by axis.

The inputs and outputs that matter

  • mirror_weights (default true) - actually copy the weight values across the mirror axis. Turn this off if you only want the name-flipping behavior without touching weights.
  • flip_group_names (default true) - rename groups following a .L/.R (or similar) convention to their mirrored counterpart as part of the operation.
  • all_groups (default false) - apply to every vertex group on the object, not just the active one.
  • use_topology (default false) - mirror based on the mesh's topological symmetry rather than a strict axis-position match. Useful when the mesh isn't perfectly symmetric in world space but is symmetric in its edge/vertex layout.

Output is the same BPY_OBJ, weights mirrored.

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, cd avatar-graph-comfyui && pip install -r requirements.txt, restart. Avatar Graph needs Python 3.10.x because bpy only ships wheels for that version - a newer ComfyUI environment fails this install, or the blender-category nodes just aren't there. macOS/Linux: dedicated conda env at 3.10. Windows: Avatech's prebuilt Python-3.10 ComfyUI zip, pack installed through Manager afterward.

Common issues & troubleshooting

Mirrored weights look wrong or offset. If the mesh isn't actually symmetric across the axis Blender assumes (small asymmetries from how it was generated or edited), a straight positional mirror will map the wrong vertices to each other. Try use_topology if the geometry is topologically symmetric even when it's not perfectly positioned that way.

Group names didn't flip. flip_group_names only works if your groups already follow a naming convention Blender recognizes as mirrored pairs (typically .L/.R suffixes, or Left/Right). Groups without that naming pattern won't get renamed - rename them to match the convention first if you want this to work.

Only one group changed when you expected all of them. all_groups defaults to false, meaning only the currently active vertex group gets mirrored unless you explicitly turn it on.

Not in the README. Correct - it's a lower-level blender-category operator wrapper, auto-generated from Blender's operator registry via generate_blender_types.py, not one of the roughly seven higher-level Avatech nodes the README documents.

Categoryblender

Inputs (5)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
mirror_weightsoptBOOLEANtrue
flip_group_namesoptBOOLEANtrue
all_groupsoptBOOLEANfalse
use_topologyoptBOOLEANfalse

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ