Camera Angle Selector
Stop typing camera prompts — pick the shot in a 3D view
- selected_angles
There's a moment in every Qwen-Image-Edit workflow using the FAL Multiple-Angles LoRA where you squint at a prompt and try to remember whether "elevated shot" and "high-angle shot" are the same thing. They're not. One user in the release thread admitted to having hand-typed all 96 camera-angle combinations into a note file before discovering this node. Camera Angle Selector exists so you never have to do that.
It's a tiny, single-purpose custom node built for one specific LoRA: fal/Qwen-Image-Edit-2511-Multiple-Angles-LoRA, trained on Qwen-Image-Edit-2511. Instead of memorizing the exact trigger vocabulary, you get an interactive 3D scene rendered right inside the node - a little central figure surrounded by colored camera icons arranged in three concentric rings. Click a camera to select that angle. Drag to orbit the scene, scroll to zoom. Filters let you narrow by view direction, height, or shot size, and "Select Visible" grabs everything currently on screen.
How it works
Under the hood it's almost insultingly simple, and that's the charm. The Python side hardcodes all 96 combinations - 8 view directions × 4 height angles × 3 shot sizes - and maps each to a ready-made prompt string:
<sks> front view low-angle shot close-up
<sks> back-right quarter view eye-level shot medium shot
The 3D scene is a frontend extension built on Three.js, pulled from a CDN the first time the node renders. Clicking cameras writes the selected indices as JSON into the node's selected_indices input; when you run the workflow, the Python side parses that JSON, clamps the indices to a safe range, and returns the matching prompt strings. The color-coding does the explaining for you: green cameras face front, red face back, the rings mark close-up/medium/wide, and the little ring on top of each camera marks its height angle.
The input and output that matter
There's exactly one input, and you should mostly leave it alone:
selected_indices- a STRING holding a JSON list of indices, default"[]". The 3D interface manages it automatically. Don't hand-edit it; it's the node's clipboard, not a control.
The one output is where the value lives:
selected_angles- a list of strings, one formatted prompt per camera you picked.
The author's own wiring advice: connect it to the Positive text input on TextEncodeQwenImageEditPlus in a normal Qwen Image Edit workflow (the default ComfyUI template works fine), with the LoRA loaded as usual. One selected angle gives you one batch; select several and you get several batches - a neat way to storyboard a scene from six angles in a single run. Just remember the output is a list, not a single string, so the node you're feeding has to accept a list input or you'll get a type error.
Installing it
ComfyUI Manager is the easy route: search "Camera Angle Selector" and install. Or clone it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/NickPittas/ComfyUI_CameraAngleSelector
Then restart ComfyUI. There's no requirements.txt and no Python dependency beyond the standard library - the only heavy piece (Three.js) is fetched from a CDN in your browser at runtime, so installation is painless.
Where people get burned
The 3D view is blank or the node looks like a plain text field: Three.js loads from cdnjs.cloudflare.com when the node first renders. Offline, behind a restrictive proxy, or just unlucky with the CDN and the scene won't appear. Check your browser console, then refresh.
The prompts do nothing: this node only writes trigger text. If <sks> ... isn't changing your output, the Multiple-Angles LoRA isn't actually loaded - no LoRA, no angles, just a confused model. It's a controller for that one LoRA on Qwen-Image-Edit-2511, not a general-purpose camera node.
Multi-selection surprises: every selected angle becomes a separate batch through a 20B image editor. That's real compute per angle, so "Select Visible" with everything on is a great way to melt an afternoon. Pick a handful.
The verdict
It's the rare node that's both a demo piece and genuinely useful. If you're on Qwen-Image-Edit-2511 with the FAL LoRA, this is the nicest way to drive it - visual, resizable, and it turns "reshoot this scene from six angles" into six clicks instead of six anxious typos.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| selected_indices | STRING | [] | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| selected_angles | STRING | — |