Nodes/Avatar Graph/Object Collection External Asset Drop
ComfyUI Node

Object Collection External Asset Drop

The internal op behind Blender's asset drag-and-drop

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Object Collection External Asset Drop
  • BPY_OBJ
  • location
  • rotation
  • scale
  • collection
  • BPY_OBJ
session_uuid0
align
use_instancetrue
drop_x0
drop_y0

Of every node in this batch, this is the one to skip without a second thought unless you're doing something very specific. It wraps bpy.ops.object.collection_external_asset_drop() - the operator Blender fires internally when you drag a collection asset out of the Asset Browser and drop it into the 3D viewport. drop_x/drop_y are literal screen-pixel mouse coordinates of that drop event, and session_uuid ties the call to a specific asset-drag session. None of that means anything outside of Blender's own UI interaction - there's no equivalent "asset drag" happening inside a ComfyUI node graph.

Where it fits in Avatar Graph

Avatar Graph (avatechai/avatar-graph-comfyui) rigs a flat character image into a real-time interactive avatar through segmentation, mesh layers, and a "Shape Flow" runtime graph, exported via Avatar Main Output. This node has nothing to do with that documented pipeline - it exists purely because the pack auto-generates a node for essentially every operator in Blender's object.* namespace, and this happens to be one of them. It's UI-event plumbing that got swept up in that process, not a tool anyone is expected to wire by hand.

How it works

When Blender's real Asset Browser handles a drag-and-drop of a collection asset, it fires this operator with the drop coordinates and a session identifier so the operator can look up which asset was being dragged and instantiate it at the right spot in the 3D view. Outside that interactive drag context, the inputs it needs (a live drag session, real screen coordinates) don't have a meaningful source, so calling it manually is unlikely to behave usefully.

Inputs and outputs

  • session_uuid (default 0) - identifies the drag session; without a real one from Blender's UI, this is essentially inert.
  • drop_x, drop_y (default 0) - the screen-space pixel coordinates of the drop.
  • collection - a B_ENUM picking which collection asset to drop.
  • align, location, rotation, scale, use_instance (default true) - standard placement fields, same shape as Object Collection Instance Add.
  • BPY_OBJ (optional) - present for consistency with the rest of the family.

Output: BPY_OBJ.

How to install it

Through ComfyUI Manager: search "avatar-graph-comfyui", install, restart. Or manually:

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

bpy needs Python 3.10.x, and nothing newer - the actual blocker most people hit. Windows gets a prebuilt Python 3.10 ComfyUI zip from the README; on Mac/Linux, build a dedicated conda env (conda create --name comfyui python=3.10). Restart with --enable-cors-header for the live avatar preview to connect to editor.avatech.ai - file exports work without it.

Common issues & troubleshooting

Almost all install trouble traces to the Python version - a 3.11/3.12 environment (the default on most current ComfyUI installs) can't load bpy at all. There's also a real report of Avatar Graph leaving a ComfyUI Desktop install badly broken (an oversized logo, an unexpected audio-permission popup) after install, severe enough that a full reinstall didn't clean it up - test in a spare, portable ComfyUI instance first if you're not already on a dedicated 3.10 setup.

If you're specifically trying to instance a known collection into your scene from a graph, use Object Collection Instance Add instead - it takes a direct collection reference and real transform fields, with none of this node's dependency on a live UI drag event that a node graph can't actually reproduce.

Categoryblender

Inputs (10)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
session_uuidoptINT0-2147483648–2147483647
alignoptCOMBO3 options: WORLD, VIEW, CURSOR
locationoptB_VECTOR3
rotationoptB_VECTOR3
scaleoptB_VECTOR3
use_instanceoptBOOLEANtrue
drop_xoptINT0-2147483648–2147483647
drop_yoptINT0-2147483648–2147483647
collectionoptB_ENUM

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ