Nodes/ComfyUI-Artha-Nodes/πŸ”± Artha Gemini Camera
ComfyUI Node

πŸ”± Artha Gemini Camera

Build a camera spec without knowing a lens from a stock setting

By CyrostarΒ·Created 10 months agoΒ·Updated 8 months agoΒ· 0
πŸ”± Artha Gemini Camera
  • image
  • camera
  • markdown
β—„typeNONEβ–Ί
β—„contextNONEβ–Ί
β—„shotNONEβ–Ί
β—„lensesNONEβ–Ί
β—„anglesNONEβ–Ί
β—„motionNONEβ–Ί
β—„focal_lengthNONEβ–Ί
β—„depth_of_fieldNONEβ–Ί
β—„aspect_ratioNONEβ–Ί
β—„sensor_typeNONEβ–Ί
β—„camera_styleNONEβ–Ί
β—„framingNONEβ–Ί
β—„camera_modelsNONEβ–Ί
β—„filmstockNONEβ–Ί
β—„colorNONEβ–Ί
β—„textureNONEβ–Ί
β—„api_keyβ–Ί
β—„modelgemini-2.5-flashβ–Ί
β—„max_tokens5000β–Ί
β—„temperature0.7β–Ί
β—„randomizefalseβ–Ί
β—„use_imagefalseβ–Ί

Artha Gemini Camera isn't a camera - there's no shutter to click and no sensor to fill. It's a spec-sheet builder that turns a pile of filmmaking dropdowns into one typed ARTHACAM object, which is exactly what the rest of the pack wants before it writes your prompt. Think of it as the "settings" half of Artha's prompt-assembly pipeline: this node, plus Artha Gemini Light and Artha Gemini Scenery, feed their outputs into Artha Gemini Compose, and Compose is what actually wordsmiths the final description.

That division of labor matters. Camera vocabulary is one of the highest-leverage things you can add to a modern prompt - LLM-encoded image models were trained on real captions, so "85mm, f/1.4, shot on Portra 400" says more than a paragraph of vague prose. But most of us can't name sixteen camera attributes on demand, and that's the entire trick this node plays.

What you get

Sixteen combo boxes, each pre-populated from a compose.json that ships with the pack: type, context, shot, lenses, angles, motion, focal length, depth of field, aspect ratio, sensor type, camera style, framing, camera models, filmstock, color, and texture. Every dropdown is a curated list of real terms - MEDIUM CLOSE UP SHOT, 35MM, 85MM, DOLLY IN/OUT, STATIC SHOT, 9:16 - and every one defaults to NONE, meaning it's left out of the build. You don't have to pick all sixteen. Pick two or three that matter and move on.

The node then hands back two outputs:

  • camera - the ARTHACAM object you wire into Artha Gemini Compose's camera input.
  • markdown - a plain-text cheat sheet listing every option in every dropdown, built from the same JSON. Handy the first time, so you can see what "motion" actually contains without opening each box.

Two toggles change the behavior. randomize rolls one value per category, which is a fun way to break out of your usual look and genuinely useful for generating variations in a batch. use_image flips the node into vision mode: give it an image and it asks Gemini to reverse-engineer what camera settings the photo was likely shot with, and returns that description instead of the dict. That's the one mode that requires an API key and a network call - the plain picker mode is pure local Python.

Where people get burned

The biggest gotcha is expecting this node to produce the final prompt. It doesn't; it produces ingredients. If you wire camera straight into a KSampler you'll get a type error, because ARTHACAM only plugs into Artha's own compose node. And in vision mode, remember the node is reading a JPEG, not measuring a camera - "fetched from the uploaded image" means Gemini's best guess, which is good for matching a vibe and hopeless for pixel-accurate technical truth.

The node shares the pack's standard API plumbing: api_key, model (defaults to gemini-2.5-flash), max_tokens (5000), and temperature (0.7). Leave the key blank and it falls back to api.json in the pack folder, then to the GEMINI_API_KEY environment variable.

Install

Install once for the whole pack - every πŸ”± node lives in Cyrostar/ComfyUI-Artha-Nodes. Easiest route is ComfyUI Manager: search "Artha" and install. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/Cyrostar/ComfyUI-Artha-Nodes
cd ComfyUI-Artha-Nodes
pip install -r requirements.txt

Then restart ComfyUI. The Gemini nodes are the part that needs the key from Google AI Studio; this one only needs it if you switch on use_image. If the camera output comes back empty, check the ComfyUI console - these nodes print API errors there and hand back an empty string rather than throwing.

CategoryArtha/LLM/Gemini

Inputs (23)

NameTypeDefaultDescription
typeCOMBONONE13 options: NONE, DSLR, MIRRORLESS, PHONE, FILM CAMERA, DIGITAL CINEMA CAMERA, +7
contextCOMBONONE11 options: NONE, PROFESSIONAL, CONSUMER, HOBBYIST, SURVEILLANCE, CINEMATIC, +5
shotCOMBONONE8 options: NONE, CLOSE UP SHOT, EXTREME CLOSE UP SHOT, MEDIUM SHOT, MEDIUM CLOSE UP SHOT, MEDIUM LONG SHOT, +2
lensesCOMBONONE6 options: NONE, WIDE ANGLE LENS, STANDARD LENS, TELEPHOTO LENS, MACRO LENS, FISHEYE LENS
anglesCOMBONONE6 options: NONE, OVER THE SHOULDER, HIGH ANGLE, LOW ANGLE, TILTED ANGLE, AERIAL ANGLE
motionCOMBONONE16 options: NONE, PUSH IN, PULL BACK, DOLLY IN/OUT, ZOOM IN/OUT, TRACKING (FOLLOW), +10
focal_lengthCOMBONONE8 options: NONE, 14MM, 24MM, 35MM, 50MM, 85MM, +2
depth_of_fieldCOMBONONE4 options: NONE, SHALLOW DOF, DEEP DOF, SELECTIVE FOCUS
aspect_ratioCOMBONONE14 options: NONE, 1:1, 4:3, 3:2, 5:4, 6:4.5, +8
sensor_typeCOMBONONE7 options: NONE, FULL FRAME, APS-C, MICRO FOUR THIRDS, MEDIUM FORMAT, DIGITAL CINEMA CAMERA, +1
camera_styleCOMBONONE7 options: NONE, HANDHELD, TRIPOD, DRONE, ROBOTIC ARM, STABILIZED GIMBAL, +1
framingCOMBONONE6 options: NONE, CENTERED, LEFT THIRD, RIGHT THIRD, LOW FRAME, HIGH FRAME
camera_modelsCOMBONONE24 options: NONE, LEICA M6, CANON AE-1, NIKON F3, FUJI X100V, SONY A7S III, +18
filmstockCOMBONONE16 options: NONE, KODAK VISION3 500T, KODAK VISION3 250D, KODAK EKTACHROME, KODAK PORTRA 400, KODAK GOLD 200, +10
colorCOMBONONE16 options: NONE, WARM TONE, COOL TONE, HIGH SATURATION, LOW SATURATION, MONOCHROME, +10
textureCOMBONONE9 options: NONE, FILM_GRAIN, VIGNETTE, BLOOM, HALATION, CHROMATIC_ABERRATION, +3
api_keySTRINGAPI key will be visible in plain text. Consider adding your api to the api.json located inside this custom node folder.
modelCOMBOgemini-2.5-flash5 options: gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.0-flash, gemini-2.0-flash-lite
max_tokensINT50001–8192For Gemini models, a token is equivalent to about 4 characters. 100 tokens is equal to about 60–80 English words.
temperatureFLOAT0.70–2A temperature of 0 means only the most likely tokens are selected. Higher values increase randomness.
randomizeBOOLEANfalseβ€”
use_imageBOOLEANfalseβ€”
imageoptIMAGEβ€”

Outputs (2)

NameTypeDescription
cameraARTHACAMβ€”
markdownSTRINGβ€”