VNCCS Position Control
Turn camera angles into the exact prompt words a multi-angle LoRA wants
- prompt
If you've ever stared at a "multiple angles" LoRA for Qwen-Image-Edit and wondered what the heck you're supposed to type to get a three-quarter view from behind, this is the node for you. VNCCS Position Control is a tiny prompt-builder that turns three camera sliders into the exact phrase that these LoRAs were trained to understand.
It exists because camera words are fiddly. "Front-right quarter view at eye level, medium shot" isn't something you want to type from memory - you want a UI to pick it, and you want the spelling to match the training data every single time. That's the whole job here.
How it works
Nothing clever, and that's the point. Three inputs get snapped to a lookup table and joined into a prompt string. The azimuth (0–360°) maps to the eight compass view names - front view, front-right quarter view, right side view, and so on around the back. Elevation maps to low-angle shot, eye-level shot, elevated shot, or high-angle shot. Distance is a straight enum: close-up, medium shot, or wide shot. If include_trigger is on, the output is prefixed with the LoRA's <sks> trigger word.
The output for azimuth 45, elevation 0, medium shot, trigger on:
<sks> front-right quarter view eye-level shot medium shot
That string is meant to be appended to your prompt - either through a text-combine node or literally pasted into your prompt box. The whole design assumes the Qwen-Image-Edit-2511-Multiple-Angles LoRA is on your model, because that's the convention the mapping was built against. The KB notes that LoRA ecosystem is real and LoRA-specific - these view tokens do nothing for a generic checkpoint.
The inputs that matter
azimuth(0–360, step 45) - angle around the subject. 0 = front, 90 = right, 180 = back. Values snap to the nearest compass point, so you can't produce a weird in-between word.elevation(−30 to 60, step 30) - vertical angle. −30 = low, 0 = eye level, 60 = high.distance-close-up/medium shot/wide shot.include_trigger- tacks<sks>on the front. Turn it off if your workflow adds the trigger elsewhere (many LoRA setups do it in a separate node, and double<sks>is sloppy prompting).
One output, prompt, a plain STRING.
Installing and using it
It's part of the VNCCS Utils pack:
cd ComfyUI/custom_nodes
git clone https://github.com/AHEKOT/ComfyUI_VNCCS_Utils.git
cd ComfyUI_VNCCS_Utils
pip install -r requirements.txt
or find VNCCS Utils in ComfyUI Manager, install, restart. Then add the node, set your angle, and wire prompt into a prompt-combine node alongside your main prompt.
Two quick notes: the sliders default to a plain front view, which is a fine starting point for most shots. And this is the non-visual sibling of VNCCS Visual Camera Control - if you'd rather drag a camera in a widget than nudge sliders, use that one instead. Same output convention, friendlier input.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| azimuth | INT | 00–360 | Angle of the camera around the subject (0=Front, 90=Right, 180=Back) |
| elevation | INT | 0-30–60 | Vertical angle of the camera (-30=Low, 0=Eye Level, 60=High) |
| distance | COMBO | medium shot | 3 options: close-up, medium shot, wide shot |
| include_trigger | BOOLEAN | true | Include <sks> trigger word |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |