OOP View π
Camera angle, shot type and bokeh in one node β framing without the guesswork
- OOP_VIEW
Naming the camera is one of the highest-leverage phrases you can put in a prompt - the knowledge base's own prompting notes call it the standout new habit of recent prompting. OOP View π from the ComfyUI-OOP pack packages that into three controls: shot type, camera angle, and whether you want background blur. It's the pack's answer to "how should the camera see this?"
What it does
Like everything in this pack, it's a string builder that emits a custom OOP_VIEW type. Three inputs:
- viewType - 15 shot types:
Closeup,Portrait,FullBody,Landscape,Panorama,WideAngle,Macro,MediumShot,LongShot,Establishing,Aerial,Profile,ActionShot,Over-the-Shoulder,Extreme Closeup. DefaultPortrait. - angle - 13 options:
Normal,High,Low,Upward,Downward,Side,Tilted,Diagonal,EyeLevel,Bird's Eye,Worm's Eye,Dutch Angle,Overhead. DefaultNormal. - backgroundBlur - a boolean. Checked means blur (bokeh), unchecked means none.
Pick FullBody + Dutch Angle + blur on, and you get:
shot:FullBody, angle:Dutch Angle, background:Blur
The mechanism is exactly that transparent. The author's one clever touch: the blur flag becomes a background:Blur / background:NoBlur label in the string, which is more specific than just saying "bokeh" - the model knows the background is out of focus rather than the whole shot being blurry.
Where it goes
OOP_VIEW feeds the View input on the OOP Node π«, where the prompt becomes Perspective: shot:FullBody, angle:Dutch Angle, background:Blur. If you're building a character portrait workflow, viewType: Portrait or Closeup plus background:Blur is the classic combo - and it's the reason to reach for this node over free-typing, since "full body" vs "closeup" is where prompts routinely go sideways.
Install
Ships with the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/0xRavenBlack/ComfyUI-OOP
Restart ComfyUI. Or use Manager - search ComfyUI-OOP in the Custom Nodes Manager. No requirements.txt, no model files, nothing heavy.
Gotchas
- Shot-type and angle lists overlap in intent.
Profile(a viewType) andSide(an angle) describe similar things. Pick the one that reads most naturally and let the other stay at default. backgroundBluris all-or-nothing. No "light blur" option - it'sBlurorNoBlur. If you want shallow depth of field specifically, you're hand-editing the string output.- SDXL-era, as with the whole pack. The aggregator hardcodes CLIP skip β2 and 1024Γ1024 sizing; the demo workflow is SDXL (euler/karras, cfg 8, 20 steps). Camera terms are one of the few prompt ingredients that do transfer to newer models - but the pack's encoding path still expects an SDXL-style checkpoint.
Part of a small, dormant pack (early 2025, ~15 stars). For nailing framing consistently across a batch - same shot type, every render - it's a handy little tool, and the background:Blur trick is worth stealing even if you never keep the node.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| angle | COMBO | Normal | 13 options: Normal, High, Low, Upward, Downward, Side, +7 |
| viewType | COMBO | Portrait | 15 options: Closeup, Portrait, FullBody, Landscape, Panorama, WideAngle, +9 |
| backgroundBlur | BOOLEAN | false | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| OOP_VIEW | OOP_VIEW | β |