Object Select Mirror
Select the mirror twin of everything you've got — for symmetrical avatars
- BPY_OBJ
- BPY_OBJ
Object Select Mirror is the symmetry helper: it selects the mirror counterpart of the currently selected objects. It wraps bpy.ops.object.select_mirror. Characters are almost always symmetrical - two eyes, two ears, two arms - and this node is how you say "grab the other side" instead of hunting for the twin by name.
Inputs and outputs
The only knob besides BPY_OBJ is extend, off by default. Off means the mirrored selection replaces what you had selected; on means it adds the mirror objects to your existing selection - which is usually what you want when you're trying to get "this eye and its twin" selected together. Output is a single BPY_OBJ, the active object.
How it works under the hood
Blender figures out the mirror relationship from the object's own setup - a mirror modifier or an explicitly configured mirror transform. If your left eye was created by duplicating and mirroring the right one properly, Select Mirror finds the twin. If you just copy-pasted and hand-moved the second eye, there's no mirror link to find, and the node quietly selects nothing. That's the difference between "built symmetrically" and "looks symmetrical."
Where it fits
In avatar pipelines, mirror selection is the setup step for symmetrical bulk ops - scale both eyes at once, assign a material to both ears, move both arms together. It pairs with the pack's transform nodes: select the left side, Select Mirror with extend, then run a transform that hits both. Because the scene resets between runs, this selection dance is rebuilt fresh every execution, right before the op that needs it.
Installing it
Part of the Avatar Graph pack. ComfyUI Manager → search "Avatar Graph" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui
python -m pip install -r requirements.txt
Pack-wide caveats: bpy==3.6.0 needs Python 3.10, first import auto-downloads the SAM checkpoint and mediapipe models. And the troubleshooting rule of thumb: if Select Mirror selects nothing, your "mirrored" objects aren't actually mirror-linked - that's a data problem, not a node problem.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| extendopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |