Mesh Select Axis
Grab everything lined up with your active vertex
- BPY_OBJ
- BPY_OBJ
This is a classic modeling trick dressed up as a node: pick one vertex, and select every other vertex that lines up with it along a given axis - everything on the same X plane, say, or everything past the Y center line. It's how you build a symmetric selection without manually clicking every point, and it's Blender's real bpy.ops.mesh.select_axis operator, exposed here 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 whichever vertex is currently the "active" one in the selection (the last one selected, if you're coming from a manual selection, or effectively the reference point Blender tracks internally) and compares every other vertex's position against it along a chosen axis and orientation. Anything that matches - on the positive side, negative side, or exactly aligned, depending on your settings - gets added to the selection.
Inputs and outputs
BPY_OBJ- the mesh coming in, with an active vertex already established from a prior selection step.orientation- which coordinate space the axis is measured in:GLOBAL,LOCAL,NORMAL,GIMBAL,VIEW,CURSOR, orPARENT.GLOBALis the one you want almost all the time unless your mesh has a rotated local space you're specifically working in.axis-X,Y, orZ, the axis to compare positions along.sign-POS(select vertices on the positive side),NEG(negative side), orALIGN(select vertices that sit at the same position on that axis as the active vertex - the symmetry case).threshold(default 0.0001) - how much positional slop counts as "aligned." Raise it if your mesh isn't perfectly symmetric and exact matches are missing vertices that should qualify.
Output is a single BPY_OBJ - the same object, selection updated to include everything that matched.
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.
Get Python 3.10.x right first - the bpy package underneath this pack needs that exact minor version, and the README recommends a dedicated conda environment on macOS/Linux (conda create --name comfyui python=3.10) instead of 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 through Manager. Restart with --enable-cors-header (macOS also wants --force-fp16) for the live 3D preview - skip it and the graph still runs, you just save the model manually from the pack's Avatar Main Output node instead.
Common issues
If nodes from this pack aren't loading, the Python version is the first thing to check - 3.10.x is a hard requirement for bpy to have a working build. On this node specifically, the most common surprise is getting fewer vertices selected than expected with ALIGN - that usually means the mesh isn't as perfectly symmetric as it looks, and bumping threshold up slightly will catch near-matches that fall just outside the tight default tolerance. It's also easy to forget this node depends on which vertex is "active" - if the selection coming in doesn't have a meaningful active vertex (say, everything or nothing is selected), the comparison won't behave the way you expect, since there's no clear reference point to measure against. As with every mesh node in this pack, feeding it something other than a real mesh BPY_OBJ from earlier in the same graph shows up as a Blender-side error.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| orientationopt | COMBO | 7 options: GLOBAL, LOCAL, NORMAL, GIMBAL, VIEW, CURSOR, +1 | |
| signopt | COMBO | 3 options: POS, NEG, ALIGN | |
| axisopt | COMBO | 3 options: X, Y, Z | |
| thresholdopt | FLOAT | 0.009.999999974752427e-7–50 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |