ComfyUI Extension: ComfyUI_KleinAngleSelector
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_DIRECTORYexportklein_angle_selector.py— the 216-entry pool andexecute()logicweb/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.