Nodes/Avatar Graph/Transform Translate
ComfyUI Node

Transform Translate

The Workhorse That Moves Anything

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Transform Translate
  • BPY_OBJ
  • value
  • orient_matrix
  • constraint_axis
  • snap_elements
  • snap_point
  • snap_normal
  • BPY_OBJ
orient_type
orient_matrix_type
mirrorfalse
use_proportional_editfalse
proportional_edit_falloff
proportional_size1.00
use_proportional_connectedfalse
use_proportional_projectedfalse
snapfalse
use_snap_projectfalse
snap_target
use_snap_selftrue
use_snap_edittrue
use_snap_nonedittrue
use_snap_selectablefalse
snap_alignfalse
gpencil_strokesfalse
cursor_transformfalse
texture_spacefalse
remove_on_cancelfalse
view2d_edge_panfalse
release_confirmfalse
use_accuratefalse
use_automerge_and_splitfalse

Transform Translate is the node you'll wire into almost every Avatar Graph workflow, because it's the one that just moves stuff. It wraps Blender's transform.translate - the plain "grab and slide" operator - and the whole mesh it's handed moves along the vector you give it. When your mouth mesh sits a few pixels off, when the eye layer needs to drop half a head-height, when you're lining up parts before Join Meshes, this is the tool. No cleverness, no surprises, exactly what it says on the tin.

How it works

The pack's transform nodes are auto-generated wrappers: BPY_OBJ in, edit mode, bpy.ops.transform.translate(**props) runs, BPY_OBJ out. The value input is a B_VECTOR3 - the X, Y, Z offset. The rest of the input list is Blender's full translate operator, scraped from RNA, and most of it you'll never touch.

The ones that matter:

  • value - the 3-value offset. This is the node. Start here.
  • orient_type - GLOBAL, LOCAL, NORMAL, GIMBAL, VIEW, CURSOR, or PARENT. If the mesh has been rotated, LOCAL moves along its own axes; GLOBAL moves along world axes. "Why is it moving sideways?" is almost always an orient_type answer.
  • constraint_axis - a 3-boolean vector that locks movement to specific axes. Want a pure vertical drop? Set only Y.
  • use_proportional_edit + proportional_size - again the organic-effect switch. Small radius = a gentle nudge of the middle while the edges stay put.

The rest - snap and its family, mirror, cursor_transform, texture_space, release_confirm - is carryover from Blender's operator and safe to ignore.

The gotcha that bites everyone

These transform nodes have no vertex-selection input, so Translate moves the entire mesh it receives. If you translate the joined character, the whole thing shifts. If you only wanted the mouth to slide, the mouth has to be its own mesh layer from Create Mesh Layer, and you translate that object before joining. That split-per-part architecture is the whole design of this pack, and it's also the #1 confusion for newcomers - you'll feel it the first time you move one part and the whole face goes with it.

Installing

Translate ships in the Avatar Graph pack (avatechai/avatar-graph-comfyui). The pack embeds bpy==3.6.0, so Python 3.10 is required:

conda create --name comfyui python=3.10
conda activate comfyui

Install via 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 python main.py --enable-cors-header for the live preview (or skip the flag and export a .GLB/.GLTF from Avatar Main Output instead). No per-node downloads.

Categoryblender

Inputs (31)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
valueoptB_VECTOR3
orient_typeoptCOMBO7 options: GLOBAL, LOCAL, NORMAL, GIMBAL, VIEW, CURSOR, +1
orient_matrixoptB_VECTOR9
orient_matrix_typeoptCOMBO7 options: GLOBAL, LOCAL, NORMAL, GIMBAL, VIEW, CURSOR, +1
constraint_axisoptB_BOOLEAN3
mirroroptBOOLEANfalse
use_proportional_editoptBOOLEANfalse
proportional_edit_falloffoptCOMBO8 options: SMOOTH, SPHERE, ROOT, INVERSE_SQUARE, SHARP, LINEAR, +2
proportional_sizeoptFLOAT1.009.999999974752427e-7–999999995904
use_proportional_connectedoptBOOLEANfalse
use_proportional_projectedoptBOOLEANfalse
snapoptBOOLEANfalse
snap_elementsoptB_ENUM_SET
use_snap_projectoptBOOLEANfalse
snap_targetoptCOMBO4 options: CLOSEST, CENTER, MEDIAN, ACTIVE
use_snap_selfoptBOOLEANtrue
use_snap_editoptBOOLEANtrue
use_snap_noneditoptBOOLEANtrue
use_snap_selectableoptBOOLEANfalse
snap_pointoptB_VECTOR3
snap_alignoptBOOLEANfalse
snap_normaloptB_VECTOR3
gpencil_strokesoptBOOLEANfalse
cursor_transformoptBOOLEANfalse
texture_spaceoptBOOLEANfalse
remove_on_canceloptBOOLEANfalse
view2d_edge_panoptBOOLEANfalse
release_confirmoptBOOLEANfalse
use_accurateoptBOOLEANfalse
use_automerge_and_splitoptBOOLEANfalse

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ