Object Meshdeform Bind
ComfyUI Node Guide
- BPY_OBJ
- BPY_OBJ
This node sits close to the actual point of Avatar Graph, Avatech's ComfyUI pack for rigging static character art into something that can blink, talk, and breathe in real time. Where a lot of the pack's ~100 nodes are generic Blender mesh-editing utilities, Object Meshdeform Bind is doing something specifically relevant to how that deformation actually works.
It's a direct wrapper of Blender's bpy.ops.object.meshdeform_bind operator. In Blender, a Mesh Deform modifier lets a detailed mesh be deformed smoothly by moving a simpler, low-poly "cage" mesh around it - the detailed mesh's vertices get bound to positions inside the cage, and then wherever the cage goes, the detailed mesh follows, smoothly. That "bind" step - locking in the relationship between cage and target - is exactly what this node triggers. It's the same mechanism you'd use in Blender proper via the modifier panel's Bind button, just callable from a ComfyUI graph.
Why this matters for avatars specifically: Avatar Graph's whole pitch is taking a flat illustration, cutting it into layered mesh parts, and driving deformation through its "Shape Flow" runtime - blink, lipsync, subtle breathing motion. Mesh deform binding is one of the ways you get natural-looking deformation of detailed artwork using a much simpler control cage, instead of having to hand-place shape keys on every vertex.
The inputs are minimal:
- BPY_OBJ - the object carrying the Mesh Deform modifier you want to bind. This has to already have that modifier configured with a cage object set - this node doesn't create the modifier, it only triggers the bind/unbind toggle on one that already exists.
- modifier - the name of the specific modifier to bind, as a string. If your object has more than one modifier, this is how you point at the right one; get the spelling wrong and the operator has nothing to act on.
Output is the same BPY_OBJ, now with its Mesh Deform modifier bound (or unbound, since in Blender this operator toggles - running it again on an already-bound modifier releases the bind).
Where people get tripped up: this node assumes setup work happened before it in the graph - a Mesh Deform modifier already added, with its cage object already assigned. If that hasn't happened, or the modifier name doesn't match exactly, the operator has nothing valid to bind and will error rather than silently doing nothing. This isn't a node you drop in cold; it's a step in a sequence.
Installing it: like every node in this pack, there's no standalone install - you get it with the full Avatar Graph pack. Search "Avatar Graph" or avatar-graph-comfyui in ComfyUI Manager, or go manual: cd ComfyUI/custom_nodes && git clone https://github.com/avatechai/avatar-graph-comfyui, then cd in and pip install -r requirements.txt, then restart ComfyUI.
The install detail that actually breaks things for people: this pack needs Python 3.10.x specifically, because its bpy dependency (Blender's API packaged as a standalone library) only ships wheels for that version. On a newer Python the install will fail outright - the README's own recommendation is a dedicated conda create --name comfyui python=3.10 environment rather than fighting your existing one. If you want the live character preview in Avatech's own web viewer, launch with --enable-cors-header (Mac users also add --force-fp16); skip it and you lose the live preview but can still export .glb/.gltf and check your bind results in Blender directly.
Also worth flagging: the README describes this whole pack as actively evolving, so treat parameter behavior as somewhat in-flux between releases rather than a locked contract.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| modifieropt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |