Object Call Convert Space
Converting a transform between coordinate spaces
- BPY_OBJ
- 0
- BPY_OBJ
ObjectCall_ConvertSpace is a rigging-math primitive from the auto-generated Blender API layer inside Avatar Graph (avatechai/avatar-graph-comfyui) - the pack that turns a still character portrait into a live, blinking, lip-syncing 2D avatar. It's not part of that documented headline workflow, but it's one of the nodes in this batch that a genuinely custom rigging step would plausibly need.
How it works
It maps to Blender's Object.convert_space(pose_bone, matrix, from_space, to_space), described in the docs as: "convert (pose) matrix from one space to another." Blender objects and bones can be positioned relative to several different coordinate spaces - world space, local space, a bone's pose space, its parent's space - and this call does the matrix math to translate a transform from one of those spaces into another. It's a standard building block behind things like custom IK solvers or constraint logic: you have a transform expressed in one frame of reference and need it in another to compare against or combine with something else.
Why you'd reach for it
Only if you're scripting bespoke rig math yourself - Avatar Graph's own documented pipeline (Shape Flow driving shape keys) doesn't route through Blender's bone/pose space system in anything the README exposes as a node. If you're extending the pack with your own armature-aware logic, this is the primitive Blender itself would hand you for the job.
Inputs and outputs
- BPY_OBJ (optional) - the object (or armature) the conversion runs against.
- One additional optional field, keyed
" 0"in this pack's schema (defaultnull) - a visible seam from how the node generator parsed Blender's multi-argument signature (pose_bone,matrix,from_space,to_space) and evidently didn't flatten it cleanly. In practice this means you likely can't setfrom_space/to_spaceprecisely from the node's UI as shipped - one of the rougher edges in this batch.
Output is a single BPY_OBJ, the object passed straight through, unchanged. The actual converted matrix that Blender's real API returns isn't exposed as its own wire here.
Installing it
Avatar Graph pulls in Blender's bpy module, which is strict about Python version - this is a real install, not a one-click drop-in. On Windows, use the author's bundled Python 3.10 environment (linked in their README), unzipped into your ComfyUI folder and launched via the included .bat, then install "Avatar Graph" from ComfyUI Manager. On macOS/Linux, pin your ComfyUI environment to Python 3.10.x exactly - conda makes that easy (conda create --name comfyui python=3.10). Then cd ComfyUI/custom_nodes, git clone https://github.com/avatechai/avatar-graph-comfyui.git (their README's own manual-install command points at a stale org, avatechgg - the repo lives under avatechai). cd avatar-graph-comfyui && python -m pip install -r requirements.txt, then restart with python main.py --enable-cors-header (Mac: also add --force-fp16). That flag opens CORS so the hosted viewer at editor.avatech.ai can talk to your local ComfyUI; skip it if you're exporting .glb/.gltf from Avatar Main Output instead.
Common issues
Python-version mismatch is the near-universal first blocker - bpy demands 3.10.x, not newer. Specific to this node: because of the flattened, oddly-keyed second parameter, precise space conversion may not be reliably settable through the node's UI as-is - if it matters that you get from_space/to_space exactly right, you may be better off doing the conversion via a scripted Python node elsewhere in the pack rather than fighting this one. As with the rest of this batch, there's no author documentation for it, so this description leans on Blender's own Object.convert_space() API docs.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| 0opt | 0 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |