π¦ Object Focus Camera v2 (Reddit)
The camera node that just says 'orbit' and means it
- prompt
- system_prompt
- description
The display name says "Reddit," and the joke is that it's the whole point. This is the smallest node in the Object Focus Camera family - two fields and a button - and it exists because someone actually tested what phrasing makes a Qwen-Image-Edit model move a camera instead of hallucinating a new room. If you want to re-shoot a product, a door handle, a ring, from a different angle without fighting for it, this is the node to reach for first.
What it actually does
Object Focus Camera V2 is a prompt builder, not a camera. It takes the thing you want to look at (target_object) and a movement from a 16-entry dropdown (camera_action), then spits out a ready-to-use edit prompt. The dropdown is all orbits and dollies - "Orbit Left 45Β°", "Orbit Right 90Β°", "Orbit Up 30Β°", "Dolly In (Zoom Closer)" - because those are the phrases that survived community testing. show_details is optional; fill it with "showing fine texture and engravings" if you want the close-up to actually show the engraving.
It returns three strings: prompt, system_prompt, and description. The system_prompt is the interesting one - it tells Qwen "you are a precision camera operator... your only job is to change the camera viewpoint" so the model preserves the object and lighting instead of redesigning the scene. Wire prompt and system_prompt into an ArchAi3D encoder (Encoder V2 works well) with a Qwen-Image-Edit checkpoint loaded, and you're done.
How the mechanism works
Behind the scenes it builds plain-English sentences: "camera orbit right around the watch by 45 degrees." That's it. The research finding this pack leans on is that "orbit around" is the single most reliable rotation phrase for Qwen Edit, and "dolly in/out" is the most consistent zoom phrasing - the model understands distance words better than abstract degrees. This matters more than it sounds like it should: with the 2509 edit model, naming a physical camera move in plain language is the highest-leverage thing you can put in a prompt.
The honest limits
Qwen doesn't do exact angles. Direction is consistent, magnitude is approximate - a 90Β° orbit reads clearly, but don't expect a protractor. Two traps from the community testing: left/right means picture left/right, not the subject's perspective, and if a person is in frame the model may rotate the person instead of the camera. Keep the subject centered and the frame person-free and this node behaves.
Installing the pack
The whole pack installs together - search "ArchAi3d Qwen" in ComfyUI Manager and hit install, or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/amir84ferdos/ComfyUI-ArchAi3d-Qwen.git
cd ComfyUI-ArchAi3d-Qwen
pip install -r requirements.txt
Restart ComfyUI and you'll find the node under ArchAi3d/Qwen/Camera. The heavy requirements.txt (OpenCV, timm, sam3, etc.) mostly serves other nodes in the pack; the camera prompt nodes only need the core deps. What you do need is the actual Qwen model - this pack is a front-end for Qwen-Image-Edit, so load a Qwen Edit checkpoint and its Qwen-VL CLIP like you would for any other edit workflow, and grab a quantized build if you're on a consumer card.
Troubleshooting
- Angle is wrong but the direction is right - that's the model, not you. Don't re-roll prompts; try a smaller degree or a different movement.
- The scene changed, not just the camera - make sure the
system_promptoutput is actually connected to the encoder's system prompt input. - It rotated the person/object instead of the camera - remove people from frame, or check the pack's note that centered subjects work better.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| target_object | STRING | the object | What to focus on: 'the watch', 'the ring', 'the door handle' |
| camera_action | COMBO | Orbit Right 45Β° | Reddit-validated camera movements (orbit around = βββββ) |
| show_detailsopt | STRING | Optional: What details to show. Example: 'showing fine texture and engravings' |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | β |
| system_prompt | STRING | β |
| description | STRING | β |