Object Call Crazyspace Displacement To Original
Mapping a deformed vertex offset back to the base mesh
- BPY_OBJ
- 0
- BPY_OBJ
This is about as deep-cut as Avatar Graph (avatechai/avatar-graph-comfyui) gets. The pack's headline feature - rigging a still character portrait into a live, blinking, lip-syncing 2D avatar - never touches this node directly. ObjectCall_CrazyspaceDisplacementToOriginal is a raw wrapper around one of Blender's more obscure mesh-deformation utilities, exposed here because the pack's generator wraps essentially the whole bpy.types.Object API, not because the avatar-rigging workflow calls for it.
How it works
It maps to Object.crazyspace_displacement_to_original(vertex_group_index, vertex_index, displacement), documented as: "convert a difference of vertex coordinates to a difference of coordinates in original space." "Crazyspace," in Blender's own terminology, is the coordinate space a vertex sits in after modifiers and shape keys have deformed it - as opposed to "original space," the mesh's plain undeformed coordinates. This call answers a specific question: if you nudge a vertex by some offset while looking at its currently-deformed (post-modifier) position, what offset does that correspond to back in the mesh's original, undeformed data?
Why you'd reach for it
Only relevant if you're writing something sculpt-tool-like - logic that lets you interactively push a vertex around in its deformed, on-screen position and needs to translate that nudge back into an edit on the base mesh. For a pack built entirely around shape-key-driven avatar rigs (Avatar Graph's "Shape Flow" system), that's a real question in principle, just not one the pack's documented nodes expose a friendly interface for.
Inputs and outputs
- BPY_OBJ (optional) - the deformed object.
- vertex_index (optional INT, default
0) - which vertex you're querying. - One additional field keyed
" 0"(defaultnull) - another visible seam in this pack's auto-generation, where the real method's other two parameters (vertex_group_index,displacement) evidently didn't flatten cleanly into named inputs.
Output is a single BPY_OBJ, the object passed straight through - the computed original-space displacement itself isn't exposed as a separate wire.
Setup this node needs first
This call reads from a cache that has to be populated ahead of time by ObjectCall_CrazyspaceEval - calling this node cold, before that one, has nothing to work from.
Installing it
Avatar Graph depends on Blender's bpy module, which is strict about Python version - expect a real install. 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" through ComfyUI Manager. On macOS/Linux, pin your ComfyUI environment to Python 3.10.x exactly - conda is the cleanest way (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 to 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 --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 trips up the install before anything else - bpy needs 3.10.x. Beyond that, this node is genuinely obscure even by this batch's standards: with one parameter missing a clean key and the computed result not wired out, treat it as a building block for a custom Python-scripted deformation tool rather than something you'd drop into a normal rigging graph. There's no author documentation for it at all, so this description is grounded in Blender's own Object.crazyspace_displacement_to_original() API docs.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| vertex_indexopt | INT | 0 | — |
| 0opt | 0 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |