RedNode Camera Studio
A camera you drag on a map, instead of words you hope the model obeys
- image
- prompt
- camera_json
- image
- latent
- width
- height
Every Krea 2 user has typed "wide cinematic shot, camera low, looking up at the subject" and gotten a picture that ignores half of it. The problem isn't that Krea 2 is dumb - it's that words like "wide" are doing a job they aren't built for. Krea 2's Qwen3-VL text encoder thinks in physical camera language: lens length, height, distance, angle. RedNode Camera Studio is the node that lets you drag those things on a map instead of trying to spell them out.
It's a top-view stage, not a node you type into. You drop subjects on it, pull the room walls out to the right size, move the camera around, and the node writes the actual paragraph Krea 2 obeys - where the camera sits, its tilt, what it sees, the lens - plus scene blocking for however many subjects you placed. What comes out isn't "wide shot," it's the physical language: focal length, camera height, how far back it is, the angle of view. That's the whole trick of the pack's camera section: the model answers to geometry it can compute, not adjectives it has to guess at.
How it works
Everything on the stage lives in one JSON blob, the config input - which you'll almost never hand-edit, because the node draws its own panel and edits it for you. The camera_translate.py file behind it does the real work: it takes your camera position, subject positions, and lens in millimeters, runs them through actual geometry - field of view from focal length, height, distance, angle to the subject - and phrases the result in the language Krea 2 was trained on.
The lights sit on the same stage, and their sliders do real physics too. Illuminance falls off with the square of the distance, and how hard a shadow reads is the light's angular size from the subject, so a big soft source close in and a small hard one across the room come out as different words. Exposure runs in stops either side of zero, colour in mireds either side of neutral daylight. Fifteen built-in setups ship with the pack, and a "set" carries the whole stage at once - camera, subjects, room size, path, lights - so you tweak a loaded room rather than building one from nothing.
The inputs and outputs that matter
Two optional inputs, and honestly that's the selling point. prompt_in is your own prompt; the camera paragraph gets joined onto it, leading it - the author's research says position matters, so the camera words go first. image just passes through untouched, so the node can sit in a review chain without breaking it.
The outputs are where it gets interesting:
prompt- the finished camera paragraph, wire it into your text encoder.camera_json- the geometry state, as a string. This is the socket the rest of the pack's camera nodes read from.latent,width,height- an empty 16-channel Krea 2 latent at the shape the geometry suggests, so the frame matches what the camera sees. Width and height come out even if you don't allocate the latent.
Set a camera path - an orbit from -60 to +60, say - and every output turns into a list: one prompt, one latent, one size per shot. ComfyUI runs the downstream nodes once per item, so a whole multi-angle orbit is a single queue.
Install
git clone https://github.com/RedNodeAI/ComfyUI-RedNodeStudio.git ComfyUI/custom_nodes/ComfyUI-RedNodeStudio
Restart ComfyUI. Or search RedNode Studio in ComfyUI Manager. Zero pip dependencies beyond what ComfyUI already has - it's all UI and text. The node itself loads on any ComfyUI, but its intended target is Krea 2, which needs ComfyUI 0.26.0+ plus the qwen3vl_4b text encoder (CLIPLoader, type krea2) and qwen_image_vae.
Where people get tripped up
The prompt output is a list even when there's no path - that's normal, it's just a one-element list. And remember the framing advice in the pack's own docs: word order sets the shot, so let the camera paragraph lead and your subject follow. One trap worth knowing: a wide framing with a subject standing nowhere can vanish from the picture entirely - the panel warns you about this, and it means you skipped placement, not that the node broke.
Final honest note: this node generates words, not images. It won't override a bad prompt - it writes better words, and Krea 2 does the rest. Used that way, it turns "shot from above" into something the model can't miss.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| config | STRING | {} | — |
| prompt_inopt | STRING | Your prompt; the camera paragraph is joined onto it (leading it, per the research on positional bias, unless the panel says otherwise). | |
| imageopt | IMAGE | Passed through untouched, so the node can sit in a review chain. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| camera_json | STRING | — |
| image | IMAGE | — |
| latent | LATENT | — |
| width | INT | — |
| height | INT | — |