Nodes/Avatar Graph/Object Make Single User
ComfyUI Node

Object Make Single User

Break shared data links before you wreck your whole rig

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Object Make Single User
  • BPY_OBJ
  • BPY_OBJ
type
objectfalse
obdatafalse
materialfalse
animationfalse
obdata_animationfalse

This is the node that keeps you from ruining the same asset five times by accident. Object_MakeSingleUser wraps bpy.ops.object.make_single_user(), Blender's "Make Single User" operator. When multiple objects share the same mesh or material - because you duplicated them, or linked them, or ran Make Links Data - editing any one changes all of them. This node detaches the ones you care about so each becomes its own private copy.

In the Avatar Graph world this is a genuinely useful rigging step. The whole point of the pack is building an animated 2D character out of a mesh: you create layers, duplicate parts for symmetry, add shape keys and modifiers. That's exactly the situation where shared data sneaks in and bites. Duplicate an eye to make two, sculpt a shape key on one, and suddenly the other eye is deformed too because they share mesh data. Run this node on the object before you start editing and the damage is contained.

The mechanism. The operator has a type enum - SELECTED_OBJECTS (default) or ALL - and a set of booleans for what to make single-user: object, obdata (mesh/geometry), material, animation, and obdata_animation. Each boolean you flip copies that category of shared data into an unshared copy for the target objects. The node passes BPY_OBJ through unchanged, so it slots into the middle of a chain without disturbing anything downstream.

Inputs that matter.

  • type - SELECTED_OBJECTS if you want surgical detachment, ALL if you want the whole scene made independent (slow on big scenes, rarely what you want mid-graph).
  • obdata - the big one. This is what stops a mesh edit from leaking into its duplicates.
  • material - flip this when two characters share a texture and you're about to repaint one.
  • animation, obdata_animation - only relevant once you have keyframes or shape-key animation, which in this pack happens after Shape Flow is wired up.

Output. BPY_OBJ, passed through.

Installing it. Part of Avatar Graph. From ComfyUI Manager search "Avatar Graph," or:

cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui
python -m pip install -r requirements.txt

Restart with --enable-cors-header for the live preview. Remember: the pack pins bpy==3.6.0 and needs Python 3.10.x.

Troubleshooting. The classic mistake is running this after the damage is done - it can't undo edits already applied to shared data. Run it before sculpting or shape-key work. Also note type defaults to SELECTED_OBJECTS, and like every multi-object operator in this pack it depends on selection state in the hidden Blender scene, not just the active object you wired in. If nothing seems to change, check whether the object actually had shared data to begin with - a fully unique object is a no-op here, which is correct behavior, just not a visible one.

Categoryblender

Inputs (7)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
typeoptCOMBO2 options: SELECTED_OBJECTS, ALL
objectoptBOOLEANfalse
obdataoptBOOLEANfalse
materialoptBOOLEANfalse
animationoptBOOLEANfalse
obdata_animationoptBOOLEANfalse

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ