Camera Angle List (kppb)
Eye level, dutch angle, low-angle hero — as a queue you can compare
- list
- count
Camera angle is the cheapest drama in photography, and the easiest way to see what it does is to render the same shot from several angles at once. Camera Angle List (kppb) is the checkbox node for exactly that: 12 angles - eye level, slightly low angle, slightly high angle, 3/4 angle, profile angle, mirror selfie angle, phone camera angle, dutch angle, low-angle hero shot, overhead selfie angle, rear 3/4 angle, from below - plus custom_entries. Tick a few and feed them to an XY Plot.
Why it's worth a grid
The angle names all match the Prompt Builder's camera_angle dropdown, so whatever you select here slots straight into that input. The interesting part is that Klein actually honors these - it's an LLM-encoded model, and camera vocabulary is one of the highest-leverage phrases in the prompt. A "low-angle hero shot" reads very differently from "slightly high angle" on the same subject, and the only way to know which one you want is to look at both.
How it works
Same list-node pattern as the rest of the pack: each angle is a boolean toggle, custom_entries appends your own lines, and you get two outputs:
list- the selected angles.count- the total.
Connect list to a ComfyLab XY Plot Queue dimension and count to the step count, and the queue renders the batch. Angles make a great second axis too - pair a few angles with a few poses and you'll learn more about your subject in one grid than in an hour of manual tweaking.
Installing
The usual:
cd ComfyUI/custom_nodes
git clone https://github.com/artokun/ComfyUI-Photoreal-Prompt-Builder.git comfyui-klein-photoreal-promptbuilder
Restart, no pip deps. Or search "Photoreal Prompt Builder" in ComfyUI Manager; the node is under conditioning/klein.
Two things to keep in mind. First, the ComfyLab-Pack quirk again: Manager can't auto-resolve the XY Plot nodes, so install "ComfyLab Pack" manually if you're running the pack's example workflows. Second, angle and shot type overlap more than you'd think - a "dutch angle" with an "upper body portrait" and a "dutch angle" with a "full body" produce very different results. If you batch both axes at once, expect the grid to multiply fast; that's normal, just budget the GPU time.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| 3/4 angle | BOOLEAN | false | — |
| dutch angle | BOOLEAN | false | — |
| eye level | BOOLEAN | false | — |
| from below | BOOLEAN | false | — |
| low-angle hero shot | BOOLEAN | false | — |
| mirror selfie angle | BOOLEAN | false | — |
| overhead selfie angle | BOOLEAN | false | — |
| phone camera angle | BOOLEAN | false | — |
| profile angle | BOOLEAN | false | — |
| rear 3/4 angle | BOOLEAN | false | — |
| slightly high angle | BOOLEAN | false | — |
| slightly low angle | BOOLEAN | false | — |
| custom_entries | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| list | LIST | — |
| count | INT | — |