PVL Flux.2 Camera Control (fal.ai)
Orbit a camera around a single image with Flux.2
- image
- IMAGE
Camera control is one of those "wow" features that usually demands a ControlNet, a camera-motion LoRA, or a video model. This node gets you a version of it with none of that: it wraps fal.ai's fal-ai/flux-2-lora-gallery/multiple-angles endpoint, which takes one image plus camera angles and returns the same scene rendered from different viewpoints. It's a member of the pvlprk/comfyui-pvl-api-nodes pack - the "ComfyUI Assistant Node" grab bag - and like every fal node in it, it runs on the cloud and costs credits per generated image.
Where this shines: turnaround sheets for character concepting, product shots where you want the object seen from three sides, or just "what does this composition look like from the left?" The Flux 2 family (per the KB) is BFL's most capable line, and its LoRA gallery ecosystem on fal is what supplies the multi-angle behavior here. One input image in, a handful of angled renders out.
How it works
The node encodes your image to a base64 data URI and submits a request to the fal queue API (https://queue.fal.run/fal-ai/flux-2-lora-gallery/multiple-angles), then polls until it completes and fetches the result. It fans out: set num_images and it runs multiple angle requests, with retries (retries, default 2) and a per-call timeout_sec (default 30) - which is low for cloud inference, so don't be surprised if a slow day triggers a retry.
The inputs that matter
imageis required - the single source image the camera moves around.horizontal_angle(degrees, -360 to 360) andvertical_angle(-90 to 90) are the orbit controls.zoom(0-10, default 5) pushes in or pulls out.image_sizedefaults toauto(keep input resolution), with presets like1:1,9:16,16:9, orcustom(thenwidth/height, 512-2048, apply).num_images(1-8, default 1) is how many angled variants you get. With it > 1 the node fans out into parallel requests.guidance_scale(2.5),num_inference_steps(40),lora_scale(1.0) tune the generation;seedof -1 means random.output_format(png/jpg/webp) andenable_safety_checker(off by default) round it out.
Output is a single IMAGE - with num_images > 1 you'll get a batch, so a Batch To Image-style node is useful if you want to inspect each frame separately.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/pvlprk/comfyui-pvl-api-nodes
Restart ComfyUI and set FAL_KEY in the launching environment (fal.ai/dashboard). Same story as every fal node in the pack: the requirements.txt drags in diffusers and friends you don't need for this one, but Manager installs it all anyway.
Where people get burned
- The 30-second default timeout is tight. Heavy Flux 2 renders can exceed it on a loaded queue; bump
timeout_sectoward 120 and rely onretries. - More images = more money, in parallel.
num_images8 fires 8 paid requests at once. Start at 1-2. - It's a LoRA-gallery endpoint, not a physics simulator. Angles and zoom are the model's interpretation - don't expect perfect perspective consistency across the batch. For rough turnaround/preview work it's great; for pixel-accurate multi-view you'll want a proper 3D/render pipeline.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| horizontal_angle | FLOAT | 0-360–360 | — |
| vertical_angle | FLOAT | 0-90–90 | — |
| zoom | FLOAT | 5.00–10 | — |
| image_size | COMBO | auto | 7 options: auto, 1:1, 3:4, 9:16, 4:3, 16:9, +1 |
| width | INT | 1024512–2048 | — |
| height | INT | 1024512–2048 | — |
| guidance_scale | FLOAT | 2.50–20 | — |
| num_inference_steps | INT | 401–200 | — |
| acceleration | COMBO | regular | 2 options: none, regular |
| lora_scale | FLOAT | 1.000–2 | — |
| seed | INT | -1-1–4294967295 | — |
| num_images | INT | 11–8 | — |
| enable_safety_checker | BOOLEAN | false | — |
| output_format | COMBO | png | 3 options: png, jpg, webp |
| retries | INT | 20–10 | — |
| timeout_sec | INT | 305–600 | — |
| debug_log | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |