Object Hook Select
Which verts is this hook driving? This node answers
- BPY_OBJ
- modifier
- BPY_OBJ
Every hook has a vertex group under the hood - the set of verts it influences - and half of rigging is just "which verts, exactly?" Object_HookSelect answers that question in the most direct way possible: it selects the vertices that a named hook drives. It's the "Select" button from Blender's Hook modifier panel, shipped as a node in the Avatar Graph pack.
You use it the way you use any selection tool: to see what you're working with, and to hand that selection to the next node. In a graph, selection is a first-class input to the pack's edit-mode Mesh_* nodes, so Select becomes a building block rather than a debugging convenience.
How it works
It calls bpy.ops.object.hook_select(). Blender runs this in edit mode: the verts in the named hook's influence set get selected, everything else gets deselected, and you can then act on them. In the Avatar Graph flow that usually means: Select the hook's verts → feed the result into a node that modifies them (move, assign to another hook, add to a vertex group).
Inputs:
BPY_OBJ- the mesh; sets active in the embedded scene, passes through on output.modifier- the hook modifier name, typed as aB_ENUMstring through the pack's ENUM (Blender) helper node.
As with every hook node in this pack, that modifier string has to match the modifier's exact name (Hook, Hook.001, ...). This is the trap: no dropdown, just a name you supply, and a mismatch silently finds nothing.
When you'd use it in an avatar graph
Two main cases. First, verification: after you hook a fringe or ponytail, Select the verts and confirm the influence set is what you expected - the classic "why is my ear following the hair" problem is usually a hook with an over-broad vertex set. Second, composition: use Select to grab a hook's verts and reassign them elsewhere, or to copy the selection forward so a later Object_HookAssign or mesh edit operates on exactly that region.
Inputs and outputs
BPY_OBJ- the mesh whose hook you're inspecting.modifier- hook modifier name (ENUM helper).BPY_OBJoutput - same object, pass-through.
Installing it
Part of Avatar Graph (avatechai/avatar-graph-comfyui). ComfyUI Manager: search "Avatar Graph". Manual:
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-level constraints apply: bpy==3.6.0 wants Python 3.10.x, and first launch auto-downloads the SAM ViT-H checkpoint (~2.5 GB) plus MediaPipe models. If the pack won't register, Python version is the first suspect.
Common issues
The modifier string mismatch is the #1 gotcha - this node is quiet when it fails, so a typo reads as "nothing happened." Also remember it's an edit-mode operator: run it in object mode and you'll get an operator error instead of a selection. And note this selects the hook's influence set, not the hook target - new users expect the empty to light up and then get confused. The pack is still being actively changed per its README, so pull updates if hooks misbehave.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| modifieropt | B_ENUM | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |