Nodes/VNCCS - Collection of utility nodes/VNCCS Visual Camera Control
ComfyUI Node

VNCCS Visual Camera Control

The visual version of Position Control

By AHEKOT·Created 10 months ago·Updated a day ago· 1,010
VNCCS Visual Camera Control
    • prompt
    camera_data{}

    VNCCS Position Control works, but sliders are a bit clinical. VNCCS Visual Camera Control is the same prompt-builder with a proper visual widget instead: you click and drag on a camera-position pad to pick azimuth and distance, slide an elevation control, and the node writes the exact camera phrase a multi-angle LoRA understands. Same output convention, way friendlier input.

    If you're doing a batch of character shots for the Qwen-Image-Edit-2511-Multiple-Angles LoRA, this is the node that makes exploring angles feel like moving a camera instead of arithmetic.

    How it works

    The Python node itself is almost a stub: it takes a hidden camera_data string, and its actual work is a JSON parse. The interesting part is the web widget (the node's frontend extension), which writes JSON into that hidden input whenever you move the controls:

    {
      "azimuth": 0,
      "elevation": 0,
      "distance": "medium shot",
      "include_trigger": true,
      "random": false,
      "random_azimuth_mode": "full"
    }
    

    The backend then feeds those values through the exact same mapping table as Position Control - azimuth to one of the eight compass views, elevation to low/eye-level/elevated/high-angle, distance to close-up/medium/wide - and prepends <sks> if the trigger is enabled. If the JSON is missing or malformed, it falls back to a front, eye-level, medium shot with the trigger on, so a broken state never crashes your queue.

    The inputs and outputs

    The visible socket side is minimal: a hidden camera_data input (don't touch it, the widget owns it) and a prompt STRING output, same shape as Position Control - something like <sks> front-right quarter view eye-level shot medium shot.

    The real controls are in the widget: the visual pad (azimuth + distance), the elevation slider, the trigger-word toggle, and the Random mode. Randomization is where this node earns its keep: enable it and every queued generation - including every item in a batch queue - gets a different angle. You can randomize across the full 360° or restrict azimuth to the front ±45° (front-left, front, front-right) for shots that stay camera-facing, while elevation and distance keep randomizing either way. For auto-generating a turn-around sheet of poses, that's a one-click feature that would otherwise take you a custom script.

    Installing and using it

    Standard VNCCS Utils install:

    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. Wire prompt into a prompt-combine node alongside your main prompt, load a multi-angle Qwen-Image-Edit LoRA, and drag away.

    One workflow note: this same prompt convention feeds VNCCS Pose Studio's camera_prompt input, so if you're building pose references and generating character shots in the same graph, this node is the shared "camera" both sides can read.

    CategoryVNCCS

    Inputs (1)

    NameTypeDefaultDescription
    camera_dataSTRING{}

    Outputs (1)

    NameTypeDescription
    promptSTRING