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]

- 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
- 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
- Low-angle shot
- Eye-level shot
- Elevated shot
- High-angle shot
- Close-up
- Medium shot
- Wide shot
Total: 96 unique camera angle combinations
- ComfyUI installed and running
- Python 3.8 or higher
-
Navigate to ComfyUI's custom_nodes directory:
cd ComfyUI/custom_nodes -
Clone or copy this repository:
git clone <repository-url> ComfyUI_CameraAngleSelector
Or if you have the files locally:
cp -r /path/to/ComfyUI_CameraAngleSelector . -
Restart ComfyUI to load the new node.
-
Add the Node:
- Right-click in the node editor
- Search for "Camera Angle Selector"
- Add the node to your workflow
-
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
-
Connect the Output:
- Connect the
selected_anglesoutput to any node that accepts string inputs - The output is a list of strings, one per selected camera angle
- Connect the
Each selected camera angle is returned as a formatted string:
<sks> {view_direction} {height_angle} {shot_size}
Example outputs:
<sks> front view low-angle shot close-up
<sks> front-right quarter view eye-level shot medium shot
<sks> back view high-angle shot wide shot
| Parameter | Type | Description |
|---|---|---|
selected_indices |
STRING | Internal parameter (auto-managed by the 3D interface) |
| Output | Type | Description |
|---|---|---|
selected_angles |
STRING (List) | List of selected camera angle prompt strings |
- Click on a camera to select/deselect it
- Drag to rotate the view around the subject
- Hover over cameras to see their details
- 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
- Clear All: Deselect all cameras
- Select Visible: Select all currently visible (filtered) cameras
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
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
- Uses
OUTPUT_IS_LIST = (True,)to enable list output - Returns
("STRING",)asRETURN_TYPES - Handles JSON input from the frontend interface
- 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
- Ensure the folder is in
ComfyUI/custom_nodes/ - Restart ComfyUI after installation
- Check for errors in the ComfyUI console
- Check browser console for JavaScript errors
- Ensure Three.js CDN is accessible
- Try refreshing the page
- Make sure you're clicking directly on camera icons
- Check that the node is properly connected in the workflow
This project is provided as-is for use with ComfyUI.
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] to the FAL.AI team