Nodes/Avatar Graph/Mesh Select Mirror
ComfyUI Node

Mesh Select Mirror

Instant selection symmetry across an axis

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Mesh Select Mirror
  • BPY_OBJ
  • axis
  • BPY_OBJ
extendfalse

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 - a B_ENUM_SET, which is worth flagging because it behaves differently from the single-choice enum type 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 (default false) - when off, the mirrored selection replaces whatever was selected going in. Set it true to 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.

Categoryblender

Inputs (3)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
axisoptB_ENUM_SET
extendoptBOOLEANfalse

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ