Nodes/Avatar Graph/Object Volume Add
ComfyUI Node

Object Volume Add

Adding smoke-and-fire style volumes from inside your ComfyUI graph

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Object Volume Add
  • BPY_OBJ
  • location
  • rotation
  • scale
  • BPY_OBJ
align

Object Volume Add is one of those nodes that tells you what Avatar Graph actually is: a whole headless Blender hiding inside ComfyUI. The pack is built to rig 2D character images into real-time talking avatars, and ninety percent of that pipeline is flat planes and shape keys. But because the authors generated a ComfyUI node for essentially every Blender operator, you also get the full 3D kitchen sink - and volume_add is the sink. It drops a volumetric primitive (an OpenVDB grid, like Blender's "Add Volume" menu: cube, sphere, cone, cylinder, capsule, torus) straight into your graph.

When would you reach for it? Honestly, rarely, unless you're doing something adjacent to the avatar work - a volumetric prop behind a character, a cloud layer, an animated smoke/fire object you want to position alongside your rig. It's the node you scroll past for months and then suddenly need at 1am.

How it works

Under the hood this is a thin wrapper around Blender's bpy.ops.object.volume_add. The pack keeps one shared Blender scene in memory; the node sets your BPY_OBJ as the active object, runs the operator, and hands the new volume back to you as a BPY_OBJ. That returned object is the whole point of the pack's type system - every one of these nodes takes a BPY_OBJ in and passes one out, so you can chain: add a volume, then feed it into a transform node, then into whatever output the pack uses to bake it out.

One thing to internalize early: a BPY_OBJ is not an image, not a mask, not anything a normal ComfyUI node will eat. You can't wire it into a Save Image node. It only talks to other Avatar Graph nodes, and to get pixels out you use the pack's own render/output path.

Inputs that matter

Everything here is optional, which is the pattern for this whole pack:

  • BPY_OBJ - the object to set active before adding. Leave it empty and the volume just appears in the shared scene.
  • align - WORLD, VIEW, or CURSOR. Pick CURSOR if you want the primitive dropped where you've parked the 3D cursor; WORLD is the safe default.
  • location, rotation, scale - each a B_VECTOR3 (three floats, x/y/z). This is where you actually position the thing, because there's no gizmo in a headless graph.

Output: BPY_OBJ - the new volume, ready to feed into Object_VolumeImport's siblings or a transform node.

Installing it

This ships in the Avatar Graph pack from Avatech AI. In ComfyUI Manager, search "Avatar Graph" and install, 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

Then restart ComfyUI. The one dependency that bites people: the pack pins bpy==3.6.0, and Blender's Python module only builds for Python 3.10.x. If your ComfyUI environment is 3.11+ (the default on many installers), pip will fail here and the whole pack won't import. A conda env with Python 3.10 is the README's own suggestion. First launch also downloads the SAM ViT-H checkpoint (~2.5 GB) to ComfyUI/models/sams, plus two MediaPipe landmarker files - that's a slow first boot, not a hang.

Common issues

  • "No module named bpy" on startup → your Python version doesn't match. Get on 3.10.x.
  • Volume looks invisible / won't render → volumes need Blender's renderer to raymarch them; the pack's default output is mesh-focused, so a volume-only graph may bake out blank. Chain it into your own render path or convert when you can.
  • Everything resets between runs. Avatar Graph clears the shared scene at the start of each execution, so the volume you added in one run is gone in the next. Build the whole chain in one graph.

If you're just here for talking avatars, skip this one. If you're doing anything volumetric, it's nice that it's there - free OpenVDB with your character rig.

Categoryblender

Inputs (5)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
alignoptCOMBO3 options: WORLD, VIEW, CURSOR
locationoptB_VECTOR3
rotationoptB_VECTOR3
scaleoptB_VECTOR3

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ