QwenCameraSelector
QwenCameraSelector for the Multiple-Angles LoRA
- prompt
- prompt_preview
If you've ever re-shot a character from a new angle with Qwen-Image-Edit, you know the drill: type <sks> front-right quarter view low-angle shot close-up into a text encoder and hope you got the wording exactly right. QwenCameraSelector exists so you stop doing that. It's the smallest possible idea - three dropdowns, one ready-made prompt string - and honestly, that's exactly what makes it good.
The name is doing some heavy lifting, mind you. This isn't a 3D camera gizmo. There's no scene, no gizmo, no API, no GPU requirement. It's a text formatter, and it knows precisely one job: it turns your choice of azimuth, elevation, and distance into the <sks> prompt that the fal/Qwen-Image-Edit-2511-Multiple-Angles-LoRA was trained on.
Why this niche exists at all
Camera framing on an edit model is a 2026 thing. Posing used to mean extracting an OpenPose skeleton and loading a ControlNet checkpoint. Then the Multiple-Angles LoRA landed on Qwen-Image-Edit and moved the whole job into a text prompt - the community reported north of 90% success across hundreds of runs at just 4 steps of inference. The prompt became the control surface, which means the prompt has to be right. Every descriptor is load-bearing, because the LoRA was trained on 96 exact combinations (8 azimuths × 4 elevations × 3 distances). Get one word wrong and you're asking for something it never saw.
That's the gap this node fills. Instead of copy-pasting a reference card, you pick 315°, -30°, close and out comes <sks> front-left quarter view low-angle shot close-up. It's the boring, fiddly part of the workflow, automated.
How it works
Under the hood it's a hardcoded dictionary, not magic. angles.py maps each azimuth to front view, front-right quarter view, and so on; each elevation to low-angle shot / eye-level shot / elevated shot / high-angle shot; each distance to close-up / medium shot / wide shot. The node joins them with commas, prepends <sks> , and hands you the string. That's the entire mechanism - which is why the install is genuinely dependency-free.
One honest caveat: the LoRA card's own reference prompts are space-separated (<sks> front view eye-level shot medium shot), while this node uses commas. In practice the descriptors are identical to the card's vocabulary, and most people don't notice a difference - but if a pose ever comes out weak, remember the output is just text. You can strip the commas in two seconds and retry.
The three inputs, and what to wire up
Every input is a dropdown, so there's no guessing:
- azimuth - 8 directions, 0° front through 315° front-left. Think of it as walking around the subject.
- elevation -
-30°low-angle,0°eye-level,30°elevated,60°high-angle. - distance -
close,medium,wide.
Outputs are two STRINGs that contain the same text: prompt and prompt_preview. The idea is you wire prompt into your CLIP Text Encode node (the official fal workflow uses TextEncodeQwenImageEditPlus) and prompt_preview into a Text Display node so you can eyeball what it's actually sending without hunting in the console. The node also prints the prompt to the terminal, which is a nice touch for debugging.
Installing it
Because it ships no model files and imports nothing but its own two Python files, install is trivial. Via ComfyUI Manager, search "Qwen Camera Selector" and hit install. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/TheMadDoctor007/ComfyUI-QwenCameraSelector.git
Restart ComfyUI and it appears under Camera > Qwen. That's it - no requirements.txt, no pip step.
Here's the part people miss, though: this node is only the prompt half of the pipeline. The node does not load the LoRA, and it won't warn you if the LoRA is missing. The real setup work is getting the Multiple-Angles .safetensors from HuggingFace into ComfyUI/models/loras and loading it with a LoRA loader on top of Qwen-Image-Edit-2511 - not the base Qwen-Image, which the Edit-line LoRAs won't touch. And since 2511 is a 20B model, you'll want a GGUF quantization plus the Lightning 4-step LoRA if you're on a consumer card; bf16 at 20B simply won't fit.
Common issues
- The node runs but the angle doesn't change. The LoRA isn't loaded, or you're on the wrong checkpoint. Load
qwen-image-edit-2511-multiple-angles-lora.safetensorsviaLoraLoaderModelOnly, exactly like the official workflow. <sks>is missing from your prompt. It isn't - the node prepends it automatically. If you were hand-typing before, don't add another one.- It won't do a camera move. It's a per-shot prompt generator. For an animation you loop the node across angles yourself; if you'd rather drag a camera around in 3D, NickPittas' ComfyUI_CameraAngleSelector is the flashier sibling in the same niche.
Also worth remembering: this whole trick lives inside an edit model, which re-emits the whole frame. Expect a little drift on faces and unedited pixels across a chain of shots - that's the model, not the prompt, and it's the price of dropping ControlNet.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| azimuth | COMBO | 0 | 0° → front view 45° → front-right quarter view 90° → right side view 135° → back-right quarter view 180° → back view 225° → back-left quarter view 270° → left side view 315° → front-left quarter view |
| elevation | COMBO | 0 | -30° → low-angle shot 0° → eye-level shot 30° → elevated shot 60° → high-angle shot |
| distance | COMBO | medium | close-up (close) medium shot (medium) wide shot (wide) |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | Prompt string for Qwen-Multiple-Angle camera settings |
| prompt_preview | STRING | Preview of the full prompt (connect to Text Display node to see it) |