Nodes/Avatar Graph/Object Call To Curve
ComfyUI Node

Object Call To Curve

Object Call To Curve — ComfyUI Node from Avatar Graph

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Object Call To Curve
  • BPY_OBJ
  • depsgraph
  • BPY_OBJ
apply_modifiersfalse

Avatar Graph is Avatech AI's pack for turning a single character portrait into a real-time interactive 2D avatar - eye blinks, lip sync - built on top of Blender's Python engine (bpy), and the README's own node table only spotlights the handful of nodes you'd actually build a workflow from: Create Mesh Layer, Create Shape Flow, Avatar Main Output, and a few others. Object Call To Curve isn't on that list. It's from the large, code-generated ObjectCall_* family exposing Blender's bpy.types.Object API roughly one method per node - and unlike its close relative To Mesh, which fits neatly into a mesh-export pipeline, this one operates on curve data, which has no obvious role in a pack whose whole output is a rigged mesh avatar.

It wraps object.to_curve(depsgraph, apply_modifiers) - Blender's equivalent of to_mesh() but for curve, text, or surface-type objects: it evaluates the object (optionally with its modifier stack applied, via apply_modifiers, default false) and bakes the result into a standalone, temporary Curve datablock. It only does anything meaningful if the object it's called on actually has curve-type data to begin with - calling it on a plain mesh object won't produce anything useful. Given Avatar Graph's entire pipeline is mesh-based (segmented image planes turned into 3D mesh layers), this node reads like a completeness artifact of exposing the whole Object API rather than a step any of the pack's documented workflows actually calls for.

As with to_mesh(), Blender's own docs are clear that the resulting curve data is temporary and needs explicit cleanup - that's what the sibling To Curve Clear node exists for. If you do find a reason to use this (a custom workflow that generates or imports curve-based geometry alongside the mesh pipeline), pair it with To Curve Clear once you're done with the result.

Schema: BPY_OBJ (optional per the schema, effectively required), depsgraph (not exposed as a configurable field, matching how the node bundles Blender's context automatically), and apply_modifiers, a plain BOOLEAN defaulting false. Output is BPY_OBJ, same object handle passed through.

Installing it means installing the whole Avatar Graph pack. Via ComfyUI Manager: search "Avatar Graph" and install. Manually: cd ComfyUI/custom_nodes && git clone https://github.com/avatechai/avatar-graph-comfyui, then cd avatar-graph-comfyui && pip install -r requirements.txt, restart. bpy needs Python 3.10.x exactly, so the README's dedicated conda create --name comfyui python=3.10 environment is worth building rather than reusing an existing Flux/SDXL setup. Restart with --enable-cors-header (--force-fp16 too on macOS) so the live avatar preview via Avatech's editor works.

Troubleshooting: bpy failing to import at startup because ComfyUI's Python isn't exactly 3.10.x is the wall you're most likely to actually hit, a common, recurring problem across Blender-Python-based ComfyUI nodes generally. Given this node only does something useful on curve-type objects, and Avatar Graph's own pipeline never produces those, if it's not behaving the way you expect the first thing to check is whether the BPY_OBJ you're feeding it is actually a curve object at all, rather than assuming the node itself is broken. Skipping --enable-cors-header costs you the live preview panel only.

Categoryblender

Inputs (3)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
depsgraphoptdepsgraph
apply_modifiersoptBOOLEANfalse

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ