Object Add Named
Pulling a specific Blender object into the graph by name
- BPY_OBJ
- matrix
- BPY_OBJ
This one is a bit different from most of the pack's nodes: it's less something you'd hand-wire in a typical rigging workflow, and more internal plumbing - the node behind Avatar Graph's drag-and-drop behavior in ComfyUI's UI.
What it is and why you'd reach for it
Object_AddNamed wraps Blender's bpy.ops.object.add_named(). Where Object_Add creates a brand-new primitive, add_named links in an object that already exists as a data-block somewhere in the Blender session - identified by name, not created fresh. In Blender's own UI this is the operator behind dragging an object from the outliner or asset browser into the viewport; the drop_x/drop_y fields in this node's schema are a giveaway of that origin - they're literally the screen coordinates of a drag-and-drop.
Practically, in an Avatar Graph pipeline you're much more likely to encounter this node already wired into a template graph - say, one built by dragging a saved object in - than to reach for it yourself starting from scratch. If you're building a graph by hand, Object_Add (a fresh primitive) or the output of an upstream mesh-building node is almost always what you actually want.
Inputs and outputs that matter
BPY_OBJ(optional) - an object from upstream, if chaining.linked(bool, default False) - whether the added object is a linked duplicate (shares its mesh data with the original, so editing one edits both) versus a fully independent copy.name(string, default empty) - the name of the existing data-block to add.session_uuid(int, default 0) - an internal Blender session identifier for disambiguating which object, beyond just its name - this is really UI plumbing rather than something you'd set by hand.matrix(a 16-value vector - a 4×4 transform matrix) - the placement transform for the added object.drop_x/drop_y(int) - leftover screen-coordinate fields from Blender's own drag-and-drop operator; not meaningful outside that context.
Output: a single BPY_OBJ, the linked-in object.
Installing Avatar Graph
bpy only has wheels for Python 3.10.x - pin your ComfyUI environment to that first, since the whole pack depends on it.
ComfyUI Manager: search avatar-graph-comfyui, install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui.git
cd avatar-graph-comfyui
python -m pip install -r requirements.txt
Restart with python main.py --enable-cors-header (--force-fp16 on Mac too). Windows gets a prebuilt Python 3.10 environment from the README; macOS/Linux is pointed at conda create --name comfyui python=3.10.
Common issues
Node fails or produces nothing with name left blank. Unlike Object_Add, this operator needs an object that genuinely exists in the current Blender session already - an empty or wrong name has nothing valid to link in.
Editing the result also changes something else unexpectedly. That's linked - set to True, the new object shares mesh data with its source, so mesh edits propagate both ways. If you wanted an independent copy, leave it False.
Nodes don't show up in ComfyUI at all. Check python --version reads 3.10.x - bpy fails to import outside that range and this whole pack won't register.
No live avatar preview. Needs --enable-cors-header at launch. Without it, the graph still runs; export the result via right-click → Save File on Avatar Main Output instead of watching the embedded editor.avatech.ai panel update live.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| linkedopt | BOOLEAN | false | — |
| nameopt | STRING | — | |
| session_uuidopt | INT | 0-2147483648–2147483647 | — |
| matrixopt | B_VECTOR16 | — | |
| drop_xopt | INT | 0-2147483648–2147483647 | — |
| drop_yopt | INT | 0-2147483648–2147483647 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |