Nodes/Avatar Graph/Transform Bbone Resize
ComfyUI Node

Transform Bbone Resize

Resizing bendy-bone segments on an armature, node-style

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Transform Bbone Resize
  • BPY_OBJ
  • value
  • orient_type
  • orient_matrix
  • orient_matrix_type
  • constraint_axis
  • BPY_OBJ
mirrorfalse
release_confirmfalse
use_accuratefalse

Transform Bbone Resize is the armature-side tool in Avatar Graph's "the entire Blender operator library is now nodes" lineup. It wraps bpy.ops.transform.bbone_resize, which resizes the segments of a B-Bone - Blender's bendy bones, the ones that curve and squash instead of rotating rigidly. If you've ever rigged a spine, a tentacle, or a wagging tail with B-Bones, you've probably resized a segment by hand. This node lets you do it from inside a ComfyUI graph instead.

Fair warning before you get excited: the avatar pipeline this pack is famous for is shape-key driven, not skeleton driven. Eyes blink and mouths lip-sync via morph targets, with the armature mostly optional. So this node is for people doing something more ambitious alongside the avatar work - actually rigging the character with bendy bones and deforming them programmatically. It's a niche tool in a niche pack, but when you need to scale B-Bone segments headlessly, it's the only game in town.

How it works

Like the other Transform_* nodes, this one inherits the pack's EditOps base: it deselects everything, sets your BPY_OBJ as active, flips into edit/pose context, runs the operator, returns to object mode, and hands the same BPY_OBJ back. The wrap is 1:1 with Blender's operator, so all the parameters map straight across from what you'd see in Blender's redo panel.

The core input is value, a B_VECTOR3 - per-axis scaling applied to the selected B-Bone segments. orient_type and orient_matrix control the orientation space (Global/Local/a custom orientation you made with the Create Orientation node); constraint_axis is a B_BOOLEAN3 letting you lock which axes get resized; mirror mirrors the operation to the paired bone on the other side - genuinely useful if your rig is symmetrical and you don't want to do the job twice.

Inputs that matter

  • BPY_OBJ - the armature to operate on.
  • value - the B_VECTOR3 resize amount. This is the one you'll actually tune.
  • constraint_axis - lock axes (X/Y/Z booleans) so you only resize along the ones you mean.
  • mirror - also apply to the mirrored bone. Leave off for single-side work.

Output: BPY_OBJ - the same armature, modified, for the next node.

Installing it

Part of the Avatar Graph pack from Avatech AI. 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 after. Pack-wide gotchas: bpy==3.6.0 pins you to Python 3.10.x (3.11+ and the pack fails to import), and first launch auto-downloads the SAM ViT-H model (~2.5 GB) to ComfyUI/models/sams plus two MediaPipe landmarker files, so the first boot is slow.

Common issues

  • "No module named bpy" → Python 3.10.x required. This is the #1 install failure for the whole pack.
  • Node seems to do nothing to a mesh object → it only does anything if the active object is an armature with B-Bones and you've selected the segments you mean. On a plain mesh it's a no-op that still passes the object through.
  • Bone selection doesn't survive the run → edit-mode selection is set up per-node by the wrapper; make sure your chain actually reaches the bones you think it does.
  • Scene resets per run - armature state from a previous execution is gone; build the rig chain in a single graph.

If you rig with bendy bones, this is a nice little automation hook. If you're doing the standard avatar thing, file it under "good to know exists."

Categoryblender

Inputs (9)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
valueoptB_VECTOR3
orient_typeoptB_ENUM
orient_matrixoptB_VECTOR9
orient_matrix_typeoptB_ENUM
constraint_axisoptB_BOOLEAN3
mirroroptBOOLEANfalse
release_confirmoptBOOLEANfalse
use_accurateoptBOOLEANfalse

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ