Nodes/Avatar Graph/Object Call Copy
ComfyUI Node

Object Call Copy

Duplicating an object before you break it

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Object Call Copy
  • BPY_OBJ
  • BPY_OBJ

Of everything in Avatar Graph's (avatechai/avatar-graph-comfyui) long tail of raw bpy.types.Object API wrappers, ObjectCall_Copy is probably the most broadly useful one - simple as it is. The pack's real draw is turning a single character portrait into a live, blinking, lip-syncing 2D avatar; this node isn't part of that documented workflow, but if you're scripting anything custom on top of it, "make a safe copy first" is a pattern you'll want.

How it works

It maps to ID.copy(), described in Blender's docs as: "create a copy of this data-block (not supported for some types)." It's the scripting equivalent of Blender's Object > Duplicate - it produces a new, independent datablock with the same data as the original at the moment of copying.

Why you'd reach for it

Anytime you want to run a destructive or exploratory Blender-side operation - a bake, a crazyspace evaluation, a direct mesh edit - without risking your source character mesh, you copy first, operate on the copy, and keep the original intact if something goes wrong. It's the cheapest insurance policy in this whole node family, and the one most likely to earn a permanent spot in a custom rig-building graph.

Inputs and outputs

Just one optional BPY_OBJ input, one BPY_OBJ output - but here the passthrough pattern actually means something useful: the object coming out is the new copy, not merely the same object echoed back (unlike most of its neighbors in this batch, where the output is truly just the input handed straight through with no real change). That distinction matters - this is one of the few ObjectCall_* nodes in the pack where the output socket is genuinely doing something for you.

Installing it

Avatar Graph depends on Blender's bpy module, which makes it fussier to install than a typical node pack - it needs a specific Python version. On Windows, the smoothest route is the author's bundled Python 3.10 environment (linked in their README), unzipped into your ComfyUI folder and launched via the included .bat, then install "Avatar Graph" from ComfyUI Manager. On macOS/Linux, pin your ComfyUI environment to Python 3.10.x exactly - conda is the cleanest way (conda create --name comfyui python=3.10). Then cd ComfyUI/custom_nodes, git clone https://github.com/avatechai/avatar-graph-comfyui.git (their README's own manual-install command actually points to a stale org, avatechgg - the repo lives under avatechai). cd avatar-graph-comfyui && python -m pip install -r requirements.txt, then restart with python main.py --enable-cors-header (Mac: also --force-fp16). That flag opens CORS so the hosted viewer at editor.avatech.ai can talk to your local ComfyUI; skip it if you're exporting .glb/.gltf from Avatar Main Output instead of using the live preview.

Common issues

Same as everywhere in this pack - a Python version other than 3.10.x and bpy won't install or import, so check that first. Specific to this node: Blender's copy() isn't always a fully deep copy depending on how the object's sub-data is linked (materials, meshes shared across multiple objects can stay shared rather than duplicating). If edits to your "copy" are unexpectedly showing up on the original too, that's Blender's ordinary single-user/multi-user data linking at play, not a bug in this node. As with the rest of this batch, there's no documentation from Avatech for it - it's not in the README's node table - so this description is grounded in Blender's own ID.copy() API docs.

Categoryblender

Inputs (1)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ