Object Origin Set
Move it to geometry, cursor, or center of mass
- BPY_OBJ
- BPY_OBJ
Object_OriginSet is the flexible version of Object_OriginClear. Instead of just parking the origin at the world, it lets you decide where the origin goes - to the geometry, to the 3D cursor, to the center of mass or volume. It's the generated wrapper for bpy.ops.object.origin_set(), and it's one of the few Object_* nodes you'll genuinely reach for in an avatar pipeline.
Why this matters for avatars
Meshes created from segmented images come out with origins wherever the generation happened to put them. Before you parent layers together or hand them to shape flows, you want the origin somewhere sensible. This node is how you make that choice explicit.
The inputs that matter
- BPY_OBJ (in/out) - the object to fix.
- type - the big one:
ORIGIN_GEOMETRY- move the origin to the mesh's center. The classic "my origin is in outer space" fix, and the one you'll use most.GEOMETRY_ORIGIN- the opposite: keep the origin where it is and move the geometry so it sits at the origin.ORIGIN_CURSOR- drop the origin at the 3D cursor.ORIGIN_CENTER_OF_MASS- origin at the center of mass.ORIGIN_CENTER_OF_VOLUME- origin at the center of volume.
- center - only relevant for the center-of-mass/volume types:
MEDIANorBOUNDS. Median uses the weighted average of the geometry; Bounds uses the bounding box center.
Output: the same BPY_OBJ, ready to chain.
How it works
Standard Object_* plumbing: the node sets your BPY_OBJ active in the shared headless Blender scene, runs the operator with the chosen type and center, and returns the object. Simple, deterministic, no hidden state beyond the object itself.
When to reach for it
Right after creating a mesh layer, before parenting or shape flow. ORIGIN_GEOMETRY gives you a clean, centered pivot so rotation and scale behave like you expect. It's a small node with outsize impact on how well the rest of your rig behaves.
Installing it
Comes with Avatar Graph:
- ComfyUI Manager: search "Avatar Graph", install, restart.
- 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
Pack-wide caveat: bpy==3.6.0 only supports Python 3.10. On 3.11+ you get "no module named bpy" and the pack won't load. Windows: the README's bundled ComfyUI_3.10.7z + run_nvidia_gpu_3.10.bat. Elsewhere: conda with python=3.10.
Gotchas
- The two directions (
GEOMETRY_ORIGINvsORIGIN_GEOMETRY) are easy to flip - if your mesh teleports after running, you picked the wrong one. That's the expected behavior of that operator, not a bug. centeronly matters for the center-of-mass/volume types.- Scene resets each run; the object must come from an upstream node in the same graph.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| typeopt | COMBO | 5 options: GEOMETRY_ORIGIN, ORIGIN_GEOMETRY, ORIGIN_CURSOR, ORIGIN_CENTER_OF_MASS, ORIGIN_CENTER_OF_VOLUME | |
| centeropt | COMBO | 2 options: MEDIAN, BOUNDS |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |