# ComfyUI Camera Angle Selector A ComfyUI custom node that provides an interactive 3D interface for selecting camera angles for the FAL multi angle lora [https://huggingface.co/fal/Qwen-Image-Edit-2511-Multiple-Angles-LoRA] for **Qwen-Image-Edit-2511**. Select from 96 different camera angle combinations (8 view directions × 4 height angles × 3 shot sizes) with visual feedback and multi-selection support. ![Camera Angle Selector Screenshot] Screenshot 2026-01-10 112331 ## Features - **3D Visualization**: Interactive 3D scene showing camera positions around a central subject - **Multi-Selection**: Select multiple camera angles simultaneously - **Color-Coded Cameras**: Direction-based colors (green=front, red=back) with height indicator rings - **Three Shot Size Layers**: Close-up (inner), Medium (middle), Wide (outer) rings - **Filter Controls**: Filter by view direction, height angle, and shot size - **Drag to Rotate**: Click and drag to rotate the 3D scene - **Zoom**: Mouse wheel to zoom in/out - **Resizable**: Node scales with 1:1 aspect ratio 3D viewport - **Selection List**: View and manage selected angles with individual removal - **List Output**: Returns a list of formatted prompt strings ## Camera Angles ### View Directions (8 angles) - 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 ### Height Angles (4 types) - Low-angle shot - Eye-level shot - Elevated shot - High-angle shot ### Shot Sizes (3 types) - Close-up - Medium shot - Wide shot **Total: 96 unique camera angle combinations** ## Installation ### Prerequisites - ComfyUI installed and running - Python 3.8 or higher ### Step-by-Step Installation 1. **Navigate to ComfyUI's custom_nodes directory:** ```bash cd ComfyUI/custom_nodes ``` 2. **Clone or copy this repository:** ```bash git clone ComfyUI_CameraAngleSelector ``` Or if you have the files locally: ```bash cp -r /path/to/ComfyUI_CameraAngleSelector . ``` 3. **Restart ComfyUI** to load the new node. ## Usage ### In ComfyUI 1. **Add the Node:** - Right-click in the node editor - Search for "Camera Angle Selector" - Add the node to your workflow 2. **Select Camera Angles:** - Click on the 3D visualization to open the full interface - Click on camera icons to select/deselect angles - Drag the scene to rotate the view - Use filters to narrow down visible cameras - Use "Select Visible" to select all currently filtered cameras - Use "Clear All" to deselect all cameras 3. **Connect the Output:** - Connect the `selected_angles` output to any node that accepts string inputs - The output is a list of strings, one per selected camera angle ### Output Format Each selected camera angle is returned as a formatted string: ``` {view_direction} {height_angle} {shot_size} ``` **Example outputs:** ``` front view low-angle shot close-up front-right quarter view eye-level shot medium shot back view high-angle shot wide shot ``` ## Node Parameters | Parameter | Type | Description | |-----------|------|-------------| | `selected_indices` | STRING | Internal parameter (auto-managed by the 3D interface) | ## Node Outputs | Output | Type | Description | |--------|------|-------------| | `selected_angles` | STRING (List) | List of selected camera angle prompt strings | ## Interface Controls ### 3D View - **Click** on a camera to select/deselect it - **Drag** to rotate the view around the subject - **Hover** over cameras to see their details ### Filters - **View Direction**: Filter by front, side, or back views - **Height Angle**: Filter by low, eye-level, elevated, or high angles - **Shot Size**: Filter by close-up, medium, or wide shots ### Action Buttons - **Clear All**: Deselect all cameras - **Select Visible**: Select all currently visible (filtered) cameras ### Legend **Camera Body Colors (Direction):** - **Green**: Front view - **Light Green**: Front quarter views - **Yellow**: Side views (left/right) - **Orange**: Back quarter views - **Red**: Back view **Shot Size Layers (Distance from subject):** - **Inner ring**: Close-up shots - **Middle ring**: Medium shots - **Outer ring**: Wide shots **Height Indicator Ring (on top of camera):** - **Red**: Low-angle - **Blue**: Eye-level - **Purple**: Elevated - **Teal**: High-angle ## File Structure ``` ComfyUI_CameraAngleSelector/ ├── __init__.py # Node registration ├── camera_angle_selector.py # Main Python node class ├── screenshot.png # Screenshot for README ├── web/ │ └── js/ │ └── camera_angle_extension.js # Three.js ComfyUI extension └── README.md # This file ``` ## Technical Details ### Python Node - Uses `OUTPUT_IS_LIST = (True,)` to enable list output - Returns `("STRING",)` as `RETURN_TYPES` - Handles JSON input from the frontend interface ### Frontend - Built with Three.js for 3D rendering - Uses raycasting for click detection on 3D objects - Implements drag-to-rotate camera controls - PostMessage API for ComfyUI integration ## Troubleshooting ### Node not appearing in ComfyUI - Ensure the folder is in `ComfyUI/custom_nodes/` - Restart ComfyUI after installation - Check for errors in the ComfyUI console ### 3D interface not loading - Check browser console for JavaScript errors - Ensure Three.js CDN is accessible - Try refreshing the page ### Selections not persisting - Make sure you're clicking directly on camera icons - Check that the node is properly connected in the workflow ## License This project is provided as-is for use with ComfyUI. ## Credits Built for ComfyUI to provide an intuitive 3D interface for camera angle selection in AI image generation workflows. Thank for the amazing lora [[Qwen-Image-Edit-2511](https://huggingface.co/fal/Qwen-Image-Edit-2511-Multiple-Angles-LoRA)] to the FAL.AI team