Transform Create Orientation
Giving your transforms a named frame of reference
- BPY_OBJ
- BPY_OBJ
Most people live their whole Blender life in Global and Local orientation and never notice the dropdown. Transform Create Orientation is for the other kind of person - the one who wants a named coordinate system to transform against, like "along the jaw" or "facing the camera." It wraps bpy.ops.transform.create_orientation, which saves the current transform as a named custom orientation that other transform operations can then reference via their orient_type input.
In Avatar Graph terms, this is a helper that feeds the other Transform_* nodes. Rotate and Mirror both take an orient_type that can point at a custom orientation, and something like a jaw rotation for a talking avatar reads much better if it's authored in a frame aligned to the head rather than world axes. That's the honest use case: set up a sensible orientation once, then rotate/mirror against it.
How it works
This wraps the Blender operator that takes a snapshot of the current transform orientation and stores it under a name. The node gives you:
- name - the string to save it as. Empty name with
use_viewoff is a recipe for an unnamed orientation you'll struggle to find later, so name it. - use_view - base the orientation on the current view direction instead of the object/world transform. Great when you want "screen-right" as a frame.
- use - apply the new orientation immediately to the active object's transform space.
- overwrite - replace an existing orientation with the same name.
One structural quirk you should know: it inherits EditOps, so the wrapper dutifully enters edit mode, creates the orientation, and exits. That's harmless - the operator works at the scene level - but it means you want your mesh in a sane state when this runs.
Inputs that matter
Really just name (and maybe use_view). The rest are fine at defaults.
Output: BPY_OBJ - the object passes through; the real output is the named orientation now living in the shared scene, which you reference by name in a Rotate or Mirror node's orient_type.
Installing it
Part of the Avatar Graph pack (Avatech AI). ComfyUI Manager → search "Avatar Graph", 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
Restart after. Pack gotchas: bpy==3.6.0 requires Python 3.10.x or the whole pack won't import, and first launch downloads the SAM ViT-H model (~2.5 GB) into ComfyUI/models/sams plus two MediaPipe landmarker files.
Common issues
- "No module named bpy" → Python 3.10.x needed; the number one pack install failure.
- The orientation is gone when the next node runs → Avatar Graph resets the shared Blender scene at the start of each execution, so the named orientation only survives within a single graph run. Create it in the same graph that uses it, and set
overwriteso re-runs don't pile up duplicates. - Another node ignores the orientation → check that node's
orient_typeis actually set to your named orientation; the wrappers default to whatever Blender's default is.
It's a quiet utility - create, name, point other transforms at it, done. Not exciting, but it's the difference between guessing at angles and authoring them deliberately.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| nameopt | STRING | — | |
| use_viewopt | BOOLEAN | false | — |
| useopt | BOOLEAN | false | — |
| overwriteopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |