UV Project From View
Unwrap it the way you're looking at it
- BPY_OBJ
- BPY_OBJ
UV Project From View is the "just map it the way I'm looking at it" unwrap. Instead of flattening by topology or seams, it bakes the current view's projection straight onto the UVs. The face you're staring at becomes the front of the texture map. It's the fastest way to get a reasonable layout for a front-facing character - which, for a 2.5D avatar rig, is most of the job.
How it works
Like the rest of the UV_* nodes in Avatar Graph, this is an auto-generated wrapper around a real Blender operator - bpy.ops.uv.project_from_view. It takes your BPY_OBJ, enters edit mode, projects the selected faces from the scene camera's viewpoint, and returns the same object. The mesh's geometry doesn't change; the UV coordinates just get overwritten with whatever the camera sees.
The inputs worth touching:
- orthographic - projects with a parallel projection (no perspective foreshortening). For a flat character plane you usually want this on; perspective is only meaningful when the geometry actually has depth.
- scale_to_bounds - scales the result so it fills the 0–1 UV square. On by default and usually what you want, because it means "use all my texture."
- clip_to_bounds - clips anything projected outside 0–1 instead of letting it wrap.
- camera_bounds - respect the camera's framing when projecting.
- correct_aspect - correct for non-square pixel aspect, which you can leave alone unless you know you need it.
Output is the same BPY_OBJ.
Where it fits
The honest part: this is the one UV node in the pack where "the view" is doing real work, and it's not obvious from the ComfyUI side. The pack runs an embedded, near-headless Blender session, so "current view" means whatever the scene camera in that session sees - not your monitor. For a flat plane mesh, that's fine: a camera pointing at the plane from the front produces a clean, front-on projection, which is exactly the avatar use case. The pack's own auto-unwrap (Plane Texture Unwrap) uses a cube projection instead, so this node is the manual alternative when the cube projection leaves the mouth or eyes looking twisted - project from view, and those features land flat.
Where people get burned: if the mesh isn't facing the camera (say it got rotated during joining), Project From View produces a foreshortened, smeared result that's worse than the cube projection you started with. If the output looks wrong, check the object's orientation before blaming the node.
Installing Avatar Graph
This node ships in the Avatar Graph pack from Avatech. From ComfyUI/custom_nodes:
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui
python -m pip install -r requirements.txt
then restart ComfyUI with --enable-cors-header (needed for the real-time avatar preview; export still works without it via right-click → Save File on Avatar Main Output). Or install via ComfyUI Manager, searching Avatar Graph.
The usual trap applies: the pack pins bpy==3.6.0, which only builds on Python 3.10.x. A 3.11/3.12 environment will fail on pip install -r requirements.txt and you'll get no nodes at all. Use the README's bundled 3.10 env on Windows or a python=3.10 conda env elsewhere, and give the first launch time to pull down the ~2.5 GB SAM model.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| orthographicopt | BOOLEAN | false | — |
| camera_boundsopt | BOOLEAN | true | — |
| correct_aspectopt | BOOLEAN | true | — |
| clip_to_boundsopt | BOOLEAN | false | — |
| scale_to_boundsopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |