Nodes/ComfyUI-qwenmultiangle/Qwen Multiangle Camera
ComfyUI Node

Qwen Multiangle Camera

Drag a camera around in 3D and never type 'eye-level shot' again

By jtydhr88·Created 8 months ago·Updated 2 months ago· 1,339
Qwen Multiangle Camera
  • image
  • Prompt
  • Camera Info
horizontal_angle0
vertical_angle0
zoom5.0
default_promptstrue
camera_viewfalse

You know that trick where Qwen-Image-Edit re-shoots the same subject from a new camera angle? This is the node that turns that trick from "type a phrase and hope" into "grab a handle in a 3D scene and drag." The Qwen Multiangle Camera node gives you an interactive Three.js viewport - your image floating on a card in 3D space, with colored handles around it - and every drag gets translated into a camera prompt the Multiple-Angles LoRA actually understands.

Let me clear up the first thing: the name is a lie. It doesn't call any API, needs no key, and generates nothing by itself. It's a prompt-formatting widget. What it formats is worth it, though - the community moved camera framing from a ControlNet problem to a LoRA-plus-prompt problem, and this node is the comfy end of that pipeline. The modidex notes on the LoRA report 90%+ success over a few hundred runs at 4-step inference, working on stylized and painterly sources, and it was the first thing that did angles for locations, not just subjects.

What it actually does

The node ships an interactive 3D preview (Vue + Three.js, bundled in the pack - you don't build anything). Three handles orbit your image:

  • Pink ring handle - horizontal angle / azimuth (0–360°)
  • Cyan arc handle - vertical angle / elevation (−30° to 60°)
  • Gold line handle - distance / zoom (0–10)

Behind the scenes the Python side buckets your continuous angles into the discrete vocabulary the LoRA was trained on: 8 horizontal directions, 4 elevation levels, 3 distance classes. Drag freely; the node snaps your intent to the closest real phrase. It outputs something like <sks> front-right quarter view elevated shot close-up.

The inputs and outputs that matter

The node is a UI-first widget, so honestly you'll set almost nothing by hand:

  • horizontal_angle, vertical_angle, zoom - the three sliders. Drag the 3D handles instead; they sync both ways. The tooltips tell you the real ranges: azimuth 0–360°, elevation −30° to 60°, distance 0 (wide) to 10 (close-up).
  • camera_view - a checkbox that switches the preview into the camera's own perspective, with orbit controls (drag to rotate, scroll to zoom). Handy for checking your shot before committing.
  • default_prompts - a trap. It's marked deprecated in the source and does literally nothing. Leave it alone.
  • image (optional) - plug in your source image and it appears in the 3D scene as the card you're framing. Only the first frame is used for preview; the actual editing still runs on your real input downstream.

Outputs: Prompt (STRING) is the one you use - wire it straight into the prompt input of your Qwen-Image-Edit workflow. There's also Camera Info (LOAD3D_CAMERA), which carries the preview camera's position/target for 3D-camera viewer nodes; ignore it unless you're building scenes.

Installing it

Grab it via ComfyUI Manager (search "ComfyUI-qwenmultiangle") or:

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyUI-qwenmultiangle.git

Then restart ComfyUI. The dirty secret is the model, not the node: you must also download the fal/Qwen-Image-Edit-2511-Multiple-Angles-LoRA from Hugging Face into your ComfyUI/models/loras folder, or the node produces perfect prompts that do nothing. No pip install needed - it's a V3-API node with the frontend prebuilt and committed, so no npm step either.

Typical workflow

LoadImage → Qwen Multiangle Camera (image in for preview) → its Prompt out into the text encoder or the editor node's prompt, alongside your Qwen-Image-Edit-2511 model. On consumer VRAM you'll want the GGUF quantizations plus a Lightning step-reduction LoRA - the full 20B at bf16 won't fit, and the 4-step path is what makes iterating a few hundred times affordable.

Where people get burned

  • Language mismatch. The prompt always comes out in English. If your base prompt is Chinese or Japanese, the model tends to ignore the mismatched English camera terms - the README says so outright. That's what the sibling Translate node fixes.
  • Drift and splitting. The editor re-emits the whole frame, and chaining multiple edits makes characters split badly (a storyboard author's exact complaint). For a sequence of angles, re-run each shot from the original rather than feeding the last output forward.
  • LoRA not applying. Wrong folder, or a LoRA trained on a different revision. 2511 accepts 2509 LoRAs, so most Multiple-Angles variants work - just check where you put it.
Categoryimage/multiangle

Inputs (6)

NameTypeDefaultDescription
horizontal_angleINT00–360Camera azimuth angle (0-360°)
vertical_angleINT0-30–60Camera elevation angle (-30° to 60°)
zoomFLOAT5.00–10Camera distance (0=wide, 10=close-up)
default_promptsBOOLEANtrueDeprecated, kept for backward compatibility
camera_viewBOOLEANfalseToggle camera perspective preview
imageoptIMAGEOptional input image to display in the 3D scene

Outputs (2)

NameTypeDescription
PromptSTRING
Camera InfoLOAD3D_CAMERA