Object Set Add Rest Position Attribute
Giving Avatar Graph's rigging a fixed baseline
- BPY_OBJ
- BPY_OBJ
Avatar Graph's whole point is rigging a character so it can move - blink, lip-sync, react - through the pack's Shape Flow runtime. For anything to "move" in a way that's meaningful, Blender needs a fixed reference for what "not moved" looks like: the rest position. Object Set Add Rest Position Attribute bakes that reference onto the mesh as a stored attribute, so later steps (modifiers, shape keys, the runtime deformation itself) have something stable to compare the current, deformed state against.
How it works
This wraps Blender's rest-position attribute operator, which stores each vertex's original, undeformed position as mesh data rather than relying on it being implicitly recoverable. That matters because once a mesh is deformed by modifiers, shape keys, or the pack's own runtime shape flow, there isn't always an easy way to ask "where was this vertex before any of that happened" unless something recorded it up front. This is groundwork, not a visible effect - running it doesn't change how the mesh looks at all, it just gives downstream rigging steps a fixed baseline to work against. You'd typically run it once, early, right after a mesh is finalized and before you start layering shape keys or Shape Flow logic on top.
The inputs and outputs that matter
BPY_OBJ- the object to add the rest position attribute to.value- boolean, defaultsfalse. Set ittrueto add the attribute (or toggle it off if you need to remove it later, depending on how the underlying Blender operator handles re-running).
Output is a single BPY_OBJ, the same object, now carrying the rest-position data.
How to install it
ComfyUI Manager, search "Avatar Graph" and install, or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
then pip install -r requirements.txt and restart. Needs Blender's bpy module, pinned to Python 3.10.x - set up a dedicated conda environment on macOS/Linux, or use Avatech's prebuilt Python-3.10 ComfyUI zip on Windows and install the pack through Manager afterward.
Common issues & troubleshooting
A node that won't load is the pack's Python-version mismatch, not this operator specifically - check ComfyUI's startup console for an import error and confirm a clean Python 3.10.x environment with requirements.txt installed without errors.
Because this node has no visible effect by itself, the way it "goes wrong" in practice is being skipped or run at the wrong point in the chain - if downstream rigging or Shape Flow behavior looks off in a way that's hard to pin down (deformations reading from the wrong baseline), check whether this step ran at all, and whether it ran before the mesh was already deformed by something else. Since there's little basis in the README or the community for exact failure symptoms beyond that, treat this one as foundational setup to get right early rather than something you debug after the fact.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| valueopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |