Nodes/ComfyUI Assistant Node/PVL Flux.2 Camera Control (fal.ai)
ComfyUI Node

PVL Flux.2 Camera Control (fal.ai)

Orbit a camera around a single image with Flux.2

By pvlprk·Created about a year ago·Updated 8 months ago· 1
PVL Flux.2 Camera Control (fal.ai)
  • image
  • IMAGE
horizontal_angle0
vertical_angle0
zoom5.0
image_sizeauto
width1024
height1024
guidance_scale2.5
num_inference_steps40
accelerationregular
lora_scale1.00
seed-1
num_images1
enable_safety_checkerfalse
output_formatpng
retries2
timeout_sec30
debug_logfalse

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

  • image is required - the single source image the camera moves around.
  • horizontal_angle (degrees, -360 to 360) and vertical_angle (-90 to 90) are the orbit controls. zoom (0-10, default 5) pushes in or pulls out.
  • image_size defaults to auto (keep input resolution), with presets like 1:1, 9:16, 16:9, or custom (then width/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; seed of -1 means random.
  • output_format (png/jpg/webp) and enable_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_sec toward 120 and rely on retries.
  • More images = more money, in parallel. num_images 8 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.
CategoryPVL_tools_FAL

Inputs (18)

NameTypeDefaultDescription
imageIMAGE
horizontal_angleFLOAT0-360–360
vertical_angleFLOAT0-90–90
zoomFLOAT5.00–10
image_sizeCOMBOauto7 options: auto, 1:1, 3:4, 9:16, 4:3, 16:9, +1
widthINT1024512–2048
heightINT1024512–2048
guidance_scaleFLOAT2.50–20
num_inference_stepsINT401–200
accelerationCOMBOregular2 options: none, regular
lora_scaleFLOAT1.000–2
seedINT-1-1–4294967295
num_imagesINT11–8
enable_safety_checkerBOOLEANfalse
output_formatCOMBOpng3 options: png, jpg, webp
retriesINT20–10
timeout_secINT305–600
debug_logBOOLEANfalse

Outputs (1)

NameTypeDescription
IMAGEIMAGE