Nodes/ComfyUI-MultiAngle-Camera/🎬 Multi-Angle Camera
ComfyUI Node

🎬 Multi-Angle Camera

The node that speaks cinematography

By yitao2020·Created 4 months ago·Updated 4 months ago· 2
🎬 Multi-Angle Camera
  • camera_control
  • image
  • angle_prompt
  • yaw
  • pitch
  • zoom

Hardest part of "same character, different angle" isn't the image - it's telling the model which angle you want in words it actually respects. This node is a tiny answer to exactly that: a 3D wireframe sphere you drag around like a camera, and it hands you back a prompt fragment like camera angle: yaw=45°, pitch=15°, zoom=1.0 (front-right diagonal view, medium shot). No sampler, no model, no image generation. It's a prompt composer with a video-game controller strapped to it.

The author (yitao2020, a Chinese dev who leans on libtv's camera-control ideas) aimed the README squarely at Nano Banana Pro and GPT Image 2 - closed-source models you can't fine-tune, so the only dial you get is the prompt. That's a smart place for a tool like this: camera language is the highest-leverage phrase slot in modern prompts anyway (the community's evidence is that naming a camera beats stacking "masterpiece, 8k" filler), and a structured yaw/pitch/zoom line is exactly what those models read well.

How it works

The whole trick lives in the frontend. multiangle_widget.js pulls Three.js from the jsDelivr CDN, draws a wireframe sphere with latitude/longitude lines, and lets you orbit it: drag to rotate (yaw, pitch), scroll to zoom, plus six one-click presets - fisheye, tilted (Dutch angle), top-down, low-angle, panorama, and behind-the-subject. Every tweak serializes into a JSON string in the node's widget.

On the Python side, process() parses that JSON, clamps yaw to ±180°, pitch to ±90°, zoom to 0.1–3.0, then buckets things into words: yaw into eight direction bins (front → front-right diagonal → right profile → … back), pitch into high/level/low, zoom into close-up/medium/wide. It keeps the exact numbers and the natural-language gloss in the output, because precise values help more than pure prose. A "prompt" toggle in the widget blanks the string entirely if you only want the numbers.

Inputs and outputs that matter

There are only two inputs, and only one is a real wire:

  • camera_control (CAMERA_ORBIT, required) - not something you connect to. It is the built-in 3D gizmo living on the node.
  • image (IMAGE, optional) - this is the trap. It does not condition the output or feed the model; it only paints a thumbnail of your reference image on the sphere so you can see the subject while orbiting. Great for keeping character angle sane, useless as an input to your pipeline. Don't expect it to influence the prompt - it won't.

Outputs: angle_prompt (STRING) is the star - wire it into your text model's prompt input, ideally after your scene description. Then yaw, pitch, zoom (FLOAT) for scripting, ControlNet conditioning, or KSampler work where you lock the seed and vary only the angle. The prompt comes out as one flat string, so for a 5-angle character sheet you're expected to stack five copies of this node and concat the outputs.

Installing it

There's no requirements.txt, no model download, no pip install - it's one Python file plus a JS widget, so this is the rare custom node that can't break your environment. Either ComfyUI Manager → search "Multi-Angle Camera", or:

cd ComfyUI/custom_nodes
git clone https://github.com/yitao2020/ComfyUI-MultiAngle-Camera

Restart ComfyUI and search the node list for 🎬 Multi-Angle Camera.

Where people get burned

  • It generates nothing on its own. It isn't an output node - hit Queue with nothing connected and you'll see no image and think it's broken. The string has to go to a text-to-image model. That's the #1 confusion.
  • The UI is in Chinese. Presets like 鱼眼视角 and sliders like 水平环绕 don't translate; you'll be matching buttons by position (the numeric readouts and angle diagram make it workable). The author is contactable at [email protected] if you want to nag for i18n.
  • It needs the internet once. Three.js loads from a CDN; if you're behind a proxy or offline it degrades to a flat 2D circle, which the README itself admits is clunky.
  • It's brand new and barely known - 1.0.0, a single commit, ~14 impressions on comfy.icu at time of writing. There's no tutorial army behind it yet, so treat it as a neat utility rather than a platform.

Honestly? As a toy for pointing at closed-source API models, it's pleasant and it's free. If you want the open-model version of this idea, the community's camera-prompt generation (like Qwen-Image-Edit's multi-angle workflows) is where the real firepower lives - but that's a heavier pipeline. This node is the 5-minute version: drag, copy the line, paste it into your API call.

Categoryimage/camera

Inputs (2)

NameTypeDefaultDescription
camera_controlCAMERA_ORBIT
imageoptIMAGE

Outputs (4)

NameTypeDescription
angle_promptSTRING
yawFLOAT
pitchFLOAT
zoomFLOAT