Multiangle
Grab a 3D camera widget, drag it around, and the AI re-renders your subject from that angle
- image
- image
Multiangle is the "what does the back of this look like?" node. You've got a product shot or a character render and you want a side view, a back view, a three-quarter that doesn't exist yet. Instead of re-prompting from scratch and praying for consistency, you grab a 3D camera widget on the node, drag the handles to pick azimuth, elevation, and distance, and the model re-renders your subject from that viewpoint.
This is a generative stage, not a transform. That's the key distinction the pack keeps hammering: Multiangle is not Rotate (which spins the pixels you already have - instant, no Run, and your subject's unseen back remains unseen). Multiangle actually invents the new perspective, and it needs a Run and a real diffusion backend to do it.
How it works
The 3D camera widget writes three values: horizontal_angle (azimuth, 0–360), vertical_angle (pitch, -30..60), and zoom (distance). ComfyTV then composes the camera description into view keywords - things like "front-right quarter view, eye-level shot, medium shot" - using the <sks> token structure of the workflow's Multiangle LoRA, appends your optional main_prompt as supplementary context, and runs the workflow.
The shipped default is Qwen Edit 2511 Multiangle (Qwen Image-Edit + the Multiple-Angles LoRA). It needs real model files in your ComfyUI/models/ tree before anything renders:
- Qwen Image Edit base →
Comfy-Org/Qwen-Image-Edit_ComfyUI - Lightning 4-step LoRA →
lightx2v/Qwen-Image-Edit-2511-Lightning - Multiple-Angles LoRA →
PVC-Inc/Qwen-Image-Edit-2511-Multiple-Angles-LoRA
The pack's docs/models.md gives the exact folder layout; it's worth checking before your first Run, because an empty "nothing happened" on a generative stage is almost always a missing checkpoint.
The inputs that matter
image(optional) - the subject you're re-shooting. This is the whole point: wire your source render in.horizontal_angle/vertical_angle/zoom- the camera position. Set them with the widget; that's what they're for.workflow- which multiangle workflow to run (default Qwen Edit 2511 Multiangle).main_prompt- optional subject context only. The pack's docs are explicit: don't hand-edit the<sks>camera structure in the workflow, and don't put camera direction in the prompt - the stage composes that.main_promptis for "the red motorcycle," not "shot from the left."
One output: image (COMFYTV_IMAGE), the re-rendered view, ready for the picker, Image Variations, or a video stage.
Install
Same as every ComfyTV stage:
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
Restart ComfyUI - fully, and on Desktop/macOS into the running instance's custom_nodes by absolute path, with __init__.py verified at the top level. No extra Python deps.
Realistic expectation-setting: results are only as consistent as the base model + LoRA allow. Subjects with strong identity (logos, faces, text) are the hard cases - the model invents plausible geometry, and "plausible" is doing a lot of work. For a hero product that must be exact, treat Multiangle as a concept tool and keep the angles gentle.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| workflow | COMBO | Qwen Edit 2511 Multiangle | Which multiangle workflow to run. |
| horizontal_angle | INT | 00–360 | — |
| vertical_angle | INT | 0-30–60 | — |
| zoom | FLOAT | 5.00–10 | — |
| main_prompt | STRING | Optional supplementary description appended after the LoRA's camera keywords. | |
| custom_params | STRING | {} | Internal — JSON of user-defined parameter attachments/values for this node. |
| imageopt | COMFYTV_IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | COMFYTV_IMAGE | — |