ComfyUI Extension: ComfyUI_KleinAngleSelector

Authored by Bisnis3d

Created

Updated

2 stars

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

Visual 3D camera-angle selector node with interactive hemisphere of 72 camera positions and distance controls.

Looking for a different extension?

Custom Nodes (0)

    README

    ComfyUI_KleinAngleSelector

    Visual 3D camera-angle selector for the lovis93/Flux-2-Multi-Angles-LoRA-v2 LoRA (base: FLUX.2-dev).

    Provides a KleinAngleSelector node that emits a STRING list of prompt fragments using the LoRA's trigger token and angle taxonomy.

    What it does

    Renders an interactive 3D hemisphere around a stylized subject with 72 camera positions (8 azimuths x 9 elevations). The 3 distances are a separate radio selector. Click a camera to toggle selection at the current distance; selected cameras show colored indicator dots (one per distance) so you can mix close-up + medium shot + wide shot per camera position.

    Each click toggles one entry in a flat pool of 216 combinations. The node outputs one prompt string per selected combination, in canonical order.

    Pool dimensions

    | Dimension | Values | | --- | --- | | Azimuth (8) | front view, front-right quarter view, right side view, back-right quarter view, back view, back-left quarter view, left side view, front-left quarter view | | Elevation (9) | low-angle, mid-low, eye-level, mid-angle, high-mid, high-angle, steep-mid, steep-angle, overhead | | Distance (3) | close-up, medium shot, wide shot |

    Total combinations: 216 (8 x 9 x 3). The flat index used in selected_indices is az * 27 + el * 3 + dist.

    Output format

    <sks> {azimuth} {elevation} shot {distance}
    

    Examples:

    • <sks> front view eye-level shot close-up
    • <sks> right side view high-angle shot medium shot
    • <sks> back-left quarter view overhead shot wide shot

    When nothing is selected, the node outputs a single default string: <sks> front view eye-level shot close-up.

    Node specs

    • Class key: KleinAngleSelector
    • Display name: 🎥 B3D Klein Angle Selector
    • Category: flux2/camera
    • Inputs: selected_indices (STRING, JSON array of ints, hidden in the UI but kept editable for debugging)
    • Outputs: selected_angles (STRING, list — OUTPUT_IS_LIST = True)

    Wiring tip

    Because the output is a list, you can wire it straight into any prompt-encoding node that loops over inputs (e.g. with Make List / For Each patterns), or pass it through a batcher to generate one image per camera angle in a single run.

    Files

    • __init__.py — node registration + WEB_DIRECTORY export
    • klein_angle_selector.py — the 216-entry pool and execute() logic
    • web/js/klein_angle_extension.js — ComfyUI extension that mounts the 3D viewer iframe
    • The iframe HTML is inlined in the JS via srcdoc. Three.js is loaded from cdnjs at runtime; ComfyUI must have internet access on first use of the node.

    Controls

    • Drag: rotate the scene
    • Wheel: zoom in/out
    • Click camera marker: toggle selection at the currently selected distance
    • Distance radio: switch which distance the next click affects (and re-positions the markers on the matching concentric ring)
    • Clear all: empty the selection
    • Reset view: restore default rotation/zoom

    Run ComfyUI workflows without the setup

    No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

    Learn more