Mesh Select Mirror
Instant selection symmetry across an axis
- BPY_OBJ
- axis
- BPY_OBJ
If your mesh is roughly symmetric - and most character/avatar geometry is - this node saves you from manually clicking the same spot on both sides every time. It's Blender's real bpy.ops.mesh.select_mirror operator, exposed as a ComfyUI node inside Avatar Graph, the pack that runs actual Blender inside ComfyUI's process (via the bpy Python package) to build interactive 2D-to-3D avatars, auto-generating a node for every mesh operator Blender has.
How it works
It looks at whatever's currently selected, and for each axis you enable, finds the mirrored counterpart on the opposite side of the mesh and selects that too. Select a vertex on the left side of a face, run this with the X axis enabled, and you'll end up with both the left and right vertex selected - no manual symmetry-hunting required. It relies on the mesh actually being spatially symmetric around the chosen axis; ask it to mirror something with no real counterpart and it simply won't find one.
Inputs and outputs
BPY_OBJ- the mesh coming in, with a selection already established upstream.axis- aB_ENUM_SET, which is worth flagging because it behaves differently from the single-choiceenumtype you'll see on most other nodes in this pack: it's a checkbox-style multi-select, so you can tick X, Y, and Z simultaneously rather than picking just one. Mirror across all three at once if your mesh has that kind of symmetry, or just the one axis that actually matters for your case.extend(defaultfalse) - when off, the mirrored selection replaces whatever was selected going in. Set ittrueto add the mirrored elements on top of the existing selection instead, which is what you usually want if the goal is "select both sides" rather than "select only the other side."
Output is a single BPY_OBJ - the same object, selection now including the mirrored geometry.
Installing it
ComfyUI Manager: search "avatar-graph-comfyui", install, restart. Manually: cd ComfyUI/custom_nodes && git clone https://github.com/avatechai/avatar-graph-comfyui, then cd avatar-graph-comfyui && python -m pip install -r requirements.txt, then restart.
Python 3.10.x is the requirement to nail down first - the bpy package this pack is built on needs that exact minor version, and the README recommends a dedicated conda environment on macOS/Linux (conda create --name comfyui python=3.10) rather than trusting an existing Python install. Windows users get a prebuilt ComfyUI + Python 3.10 zip linked in the README to unzip over their install before adding the pack via Manager. Restart with --enable-cors-header (macOS also wants --force-fp16) for the live 3D preview - without it, the graph still runs fine, you just save the model manually from the pack's Avatar Main Output node instead.
Common issues
Rule out Python version first if this pack's nodes aren't loading at all - anything other than 3.10.x leaves bpy without a working build. On this node specifically, the most common surprise is getting an empty mirrored selection when you were sure the mesh looked symmetric: Blender's mirror-find has to match vertex positions within a small tolerance, and geometry generated procedurally (rather than hand-modeled with real mirror symmetry) is often close to symmetric but not exact, which is enough to fail the match. If that's what's happening, this node just quietly does nothing rather than erroring - check the resulting selection count before assuming a downstream step is broken. And remember extend defaults to false: if you expected to end up with both sides selected and instead only have the mirrored side, that's the field to flip.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| axisopt | B_ENUM_SET | — | |
| extendopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |