Object Vertex Group Mirror
Mirroring weight paint so you don't hand-paint both sides
- BPY_OBJ
- BPY_OBJ
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(defaulttrue) - 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(defaulttrue) - rename groups following a.L/.R(or similar) convention to their mirrored counterpart as part of the operation.all_groups(defaultfalse) - apply to every vertex group on the object, not just the active one.use_topology(defaultfalse) - 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.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| mirror_weightsopt | BOOLEAN | true | — |
| flip_group_namesopt | BOOLEAN | true | — |
| all_groupsopt | BOOLEAN | false | — |
| use_topologyopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |