Qwen Image Multiple Angles
Orbit your subject with three sliders
- client
- image
Qwen Image Multiple Angles does exactly what its name says and it's surprisingly fun: give it a reference image and it re-renders your subject from a different camera angle. The whole node is basically three sliders - horizontal angle, vertical angle, distance - plus your prompt. It's the hosted-model version of what used to take a ControlNet pose map, a depth pass, and a prayer.
This is one of the Qwen-image family's party tricks, and the angle-change use case is one the KB's character-consistency work highlights as a classic multi-view generation task: show the model one view of a character or product and ask it to imagine another. These models are good at it because they've seen enough of the world to reason about what the back of that chair probably looks like. The horizontal_angle (-90 to 90) rotates around the subject, vertical_angle (-30 to 60) tilts up or down, and distance (0 to 2, default 1) pulls the camera closer or further. Add a prompt to steer ("now it's holding a coffee cup") and you're essentially directing a small virtual photoshoot.
The inputs
images- reference images, comma-separated URLs, max 3prompt- optional guidance in Chinese or Englishhorizontal_angle- -90 to 90 degreesvertical_angle- -30 to 60 degreesdistance- 0 to 2, default 1width/height- output size, 256 to 1536seed- reproducibility, -1 for randomoutput_format,enable_sync_mode,enable_base64_output- the usual Qwen knobsclient- optional WaveSpeed client
The output is a single image IMAGE tensor. With up to 3 reference images you get multi-view context - a front and side view in, a three-quarter view out - which is where this node gets genuinely useful for product and character work.
Install and setup
cd ComfyUI/custom_nodes
git clone https://github.com/eRepublik-Labs/comfyui-nodes-erpk.git erpk
cd erpk && pip install -r requirements.txt
Or "ERPK Custom Nodes" from ComfyUI Manager, restart, and set a WaveSpeed API key in ERPK Settings (right-click canvas).
Troubleshooting and honest limits
The images string field is the recurring gotcha - comma-separated URLs or paths, not an IMAGE tensor. And "3 angles" is the xAI-style cap here: max 3 references, more gets truncated. The honest limit is that it's a hosted re-imagination, not photogrammetry: the model infers what the unseen angle probably looks like, so identity and texture fidelity degrade as the angle swings toward ±90. For a modest 20–40 degree shift, results are usually great; a full behind-the-subject orbit can drift into "plausible but not quite them." Use small angle steps and keep distance near default for consistency, then iterate.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| images | STRING | Reference images to transform (comma-separated URLs, max 3) | |
| promptopt | STRING | Optional text description to guide the transformation (Chinese or English) | |
| clientopt | WAVESPEED_AI_API_CLIENT | WaveSpeed API client (optional if API key is configured in Settings) | |
| horizontal_angleopt | INT | 0-90–90 | Horizontal rotation angle (-90 to 90 degrees) |
| vertical_angleopt | INT | 0-30–60 | Vertical rotation angle (-30 to 60 degrees) |
| distanceopt | FLOAT | 1.00–2 | Subject distance factor (0 to 2, default 1) |
| widthopt | INT | 1024256–1536 | Image width (256 to 1536) |
| heightopt | INT | 1024256–1536 | Image height (256 to 1536) |
| seedopt | INT | -1-1–2147483647 | Random seed for reproducibility (-1 for random) |
| output_formatopt | COMBO | jpeg | Output image format |
| enable_sync_modeopt | BOOLEAN | false | Wait for completion before returning response |
| enable_base64_outputopt | BOOLEAN | false | Return BASE64-encoded output instead of URL |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |