Nodes/ComfyUI-Flow-Assistor/Camera Angle Control
ComfyUI Node

Camera Angle Control

Turn camera directions into prompt words the model actually gets

By Merserk·Created 9 months ago·Updated about a month ago· 6
Camera Angle Control
    • camera_description
    precise_modetrue
    enable_rotationfalse
    rotation_value0
    enable_verticalfalse
    vertical_value0
    enable_depthfalse
    depth_value0
    enable_focal_lengthfalse
    focal_length_value50

    Camera Angle Control is a prompt-writing helper that turns sliders into camera direction. Instead of typing "three-quarter view from the right, low angle, telephoto" and hoping the phrasing lands, you move four sliders - rotation, vertical angle, distance, focal length - and the node builds the descriptive text for you. One output, one string, straight into a text box or a concatenation node. It's aimed at the people who want repeatable, consistent camera setups across a series of shots without retyping the same description and praying the wording doesn't drift.

    How it works

    The node is a set of keyword-mapping functions dressed as sliders. Each axis has an enable_ toggle plus a value slider, and only enabled axes contribute to the output (they're joined with commas). The ranges map to real cinematography vocabulary:

    • rotation_value (−180 to 180) - front view through slight/two-thirds/profile angles to behind-the-subject and back view. The -/+ sign picks the side.
    • vertical_value (−100 to 100) - eye level, then high angle / bird's-eye view going up, low angle / worm's-eye view going down.
    • depth_value (−100 to 100) - mid shot through close-up / macro at the positive end, full-body and wide establishing shots at the negative end.
    • focal_length_value (0–600mm) - fisheye, wide angle, standard, portrait, telephoto, super-telephoto.

    The one input you should leave on is precise_mode (default true) - it appends the exact numbers to the keywords (three-quarter view from right (angle 45.0°)). Turn it off for a cleaner keyword-only string that some models read more naturally.

    The honest take

    This node is most valuable on modern models with LLM-based text encoders, and that's not a coincidence. The knowledge base's prompt engineering essay makes the point: naming a physical camera is one of the highest-leverage moves there is on models like Z-Image, Krea, and Flux - the encoder was trained on real captions that describe cameras - while old-school tag spam is largely inert. So a natural "low angle shot, worm's eye view from below (vertical angle -80.0), telephoto lens (200.0mm)" description is exactly the input those models reward. On SDXL it still helps, but the effect is subtler.

    Installing

    This is one of the 26 nodes in ComfyUI-Flow-Assistor - ComfyUI Manager (search "Flow Assistor") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Merserk/ComfyUI-Flow-Assistor.git
    

    Restart after cloning. Current ComfyUI required (V3-only pack), no extra dependencies or model downloads.

    Where people get burned

    The output is just the camera description - there's no subject, lighting, or scene in it, so if you wire it straight into CLIP Text Encode by itself you'll get a very empty image. Concatenate it with your actual prompt. And remember the enable toggles: sliders sitting at their defaults do nothing until you flip the matching enable_ switch, which trips people up more than it should - set enable_rotation on, then drag the value. Lastly, precise mode's numeric suffixes can read as noise on SDXL; if the results feel cluttered, flip precise_mode off before abandoning the node.

    Categoryflow-assistor/text

    Inputs (9)

    NameTypeDefaultDescription
    precise_modeBOOLEANtrueInclude exact numbers alongside viewpoint keywords.
    enable_rotationoptBOOLEANfalse
    rotation_valueoptFLOAT0-180–180
    enable_verticaloptBOOLEANfalse
    vertical_valueoptFLOAT0-100–100
    enable_depthoptBOOLEANfalse
    depth_valueoptFLOAT0-100–100
    enable_focal_lengthoptBOOLEANfalse
    focal_length_valueoptFLOAT500–600

    Outputs (1)

    NameTypeDescription
    camera_descriptionSTRING