Object Assign Property Defaults
Sanitizing an object before Shape Flow gets it
- BPY_OBJ
- BPY_OBJ
This node doesn't have a standard Blender operator behind it - there's no bpy.ops.object.assign_property_defaults() in Blender's API. It's pack-authored, and its two boolean toggles (process_data, process_bones) are a strong hint at what it's for: getting an object into a known, expected state before Avatech's own systems - the Shape Flow runtime, the editor - read it.
What it is and why you'd reach for it
Most of Avatar Graph's Mesh_* and Object_* nodes are thin wrappers around Blender's own operators. This one isn't - it's custom glue written for this pack specifically. Given the name and the two toggles it exposes, it reads as a "reset this object's custom properties to Avatech's expected defaults" step: something you'd run once on a freshly built or freshly edited object before handing it off to the parts of the pipeline that depend on specific property values being present and sane - the Shape Flow graph that drives real-time animation, or the export step feeding Avatar Main Output.
Practically, this is a maintenance node rather than something with a visible creative effect on its own. You won't see a change in the mesh's shape or texture from running it; you're running it to make sure downstream nodes and the live editor don't choke on missing or stale property data.
Inputs and outputs that matter
BPY_OBJ(optional) - the object to sanitize.process_data(bool, default True) - whether the object's own data-level properties (its mesh/shape-key data) get reset to defaults.process_bones(bool, default True) - whether bone-level properties get reset too, relevant if the object has an armature involved.
Output: a single BPY_OBJ, its properties reset per the toggles above.
If you're not sure whether you need this node in a given graph, the safe default is to leave both toggles on and run it once late in your build chain, right before wiring the object into shape-key posing or the Avatar Main Output - treat it as cheap insurance rather than something to skip to save a node.
Installing Avatar Graph
The pack runs on bpy, which only ships wheels for Python 3.10.x - pin your ComfyUI environment to that before anything else.
ComfyUI Manager: search avatar-graph-comfyui, install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui.git
cd avatar-graph-comfyui
python -m pip install -r requirements.txt
Restart with python main.py --enable-cors-header (--force-fp16 too on Mac). Windows gets a prebuilt Python 3.10 environment from the README; macOS/Linux is pointed at a dedicated conda create --name comfyui python=3.10.
Common issues
Not obvious what this node changed. That's expected - it's not a visual/geometry operation, so if you're debugging why a downstream node behaves differently with and without this step, that's the point: it's normalizing data the live preview or Shape Flow graph reads, not the mesh shape.
Unsure whether to toggle process_bones off. If your object has no armature involved (the common case for a pure shape-key-driven face rig), it likely has no meaningful effect either way - leave it on unless you have a specific reason to skip it.
Nodes not appearing in ComfyUI at all. Check python --version is exactly 3.10.x - bpy fails to import outside that range and this whole pack won't register.
No live avatar preview. Needs --enable-cors-header at launch to reach the embedded editor.avatech.ai panel - this is a separate issue from what this node does, but the two often get debugged together since both affect whether the live preview behaves correctly.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| process_dataopt | BOOLEAN | true | — |
| process_bonesopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |