AnyAngle 多图编码 · Qwen 2.1
What the Multi-Person Encoder Actually Does
- clip
- vae
- guide_image
- positive
- negative
- latent
If you've written "the woman in <image2> and the man in <image3>" into a Qwen prompt and then quietly wired the encoder the other way round, you already know why this node exists. Multi-character work is the part of this stack that never got easy - the long-running community verdict is that photorealistic multi-person shots are still built compositionally, with spatial scaffolding, rather than hoped for. The whole AnyAngle multi-person path is that scaffolding: you stage people in the 3D studio, bind each one to a photo, pick a camera, and then this node turns the scene into a single Qwen call where the prompt text and the image slots are generated from the same source of truth.
AnyAngleMultiPersonEncodeT8 ("AnyAngle 多人编码 · T8") is the drop-in replacement for the Text Encode pair in the pack's multi-person workflow. Clip, VAE, the studio's scene_json, a guide image in - positive and negative conditioning plus a latent out. That's the whole interface.
How it works
The important bit is that you don't author anything. scene_json is the studio's saved scene plus assets, sitting in ComfyUI/input/anyangle_studio/; the string is effectively a pointer to that document. The node canonicalises it, rebuilds the image manifest (which reference photo claims which image_N slot, guide-first or reference-first), rebuilds the prose prompt per person, and the phone-book is closed: it then loads each reference PNG out of the asset store, rescales it to your pixel budget, hands the whole dict to ComfyUI's own Qwen image encoder, and returns the conditioning. One manifest produces both the <imageN> labels and the tensors, which is the only sane way to keep a five-person prompt from drifting out of sync with its five photos.
It also bails out loudly if the scene has gone stale - if the prompt stored with the scene no longer matches a fresh rebuild, you get "人物参考清单与提示词不同步,请重新应用工作台". That's not a bug. Go back into the studio and hit apply.
The inputs worth thinking about
scene_jsonandguide_image- wire them from theAnyAngleStudioT8node (scene_json,guide_image_2). Don't hand-editscene_json; the sync check will catch you anyway.clip- your Qwen3-VL text encoder through a CLIPLoader;vae- the Qwen Image 2.1 VAE.reference_resolution(default 512, 0–4096, step 32) - the author's own description: a pixel budget for the people photos, where 0 keeps original size, and the guide image always keeps its own framing. It's an area budget, so a 1024² photo downscales to roughly 512². Raise it or set 0 if faces matter more than speed; on a 20B model those extra vision tokens are not free.
Outputs are positive and negative (both CONDITIONING, straight into KSampler) and latent - which is your canvas, so there's no EmptyLatentImage in this workflow. After a run the latent's label rewrites itself to the real encoded size, e.g. latent · 1024 × 1024. Handy when you can't tell why you got a widescreen image.
Prompting note that applies to every LLM-encoded model here: write sentences, and remember weighting syntax like (face:1.4) is inert on these encoders. The node's generated prompt already does the scoping for you - each person's identity is bound to a numbered image and their world position and facing are spelled out.
Install
Manager, search Comfyui-Qwen-Image-2.1-MultiAngle-T8 (registry ID qwen-image-21-multiangle-t8), or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-Qwen-Image-2.1-MultiAngle-T8.git ComfyUI-AnyAngle-Studio-T8
cd ComfyUI-AnyAngle-Studio-T8
python -m pip install -r requirements.txt
python install_assets.py
Use that dot-free folder name - the frontend truncates the source label at the decimal otherwise. Skip --download-lora and install_reconstruction.py if you only want this node: multi-person posing deliberately runs the base model (LoRA strength 0), and you need the Qwen Image 2.1 weights and the text encoder, not the 3.78 GB reconstruction pack. Requires a ComfyUI with the native Qwen Image 2.1 nodes (0.36.0 verified).
Where people get burned
Moving the workflow without its assets. scene_json points at photos in ComfyUI/input/anyangle_studio/. Import the JSON on another machine with an empty folder and there is nothing to encode.
Batch photo inputs. Each reference input takes the first frame of the batch only; splitting people across one Load Image is how you get silent surprises.
Scale. The author's own validation matrix is refreshingly blunt: 32 multi-person shots all executed, 7 basically conformed, 2 partly, 23 failed - and nine-person scenes drifted up to 10–12 people. Two or three people with clear staging and a POSE guide is the useful envelope. Ten images is Qwen's stated reference budget including the guide, and the manifest warns past it; exceeding it isn't a promise of nine faces.
Wrong aspect ratio almost always means image order. The first image in the order sets the frame, which is why guide-first is the default.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| vae | VAE | — | |
| scene_json | STRING | — | |
| reference_resolution | INT | 5120–4096 | 新增参考素材的像素面积预算,0保留这些素材原尺寸。AnyAngle场景来源图保持输入尺寸;引导图及仅参考模式的首图单独处理。 |
| guide_imageopt | IMAGE | — | |
| promptopt | STRING | 可手写或转为输入接线。全文模式原样使用,补充模式追加到 Studio 文本。 | |
| negative_promptopt | STRING | — | |
| prompt_modeopt | COMBO | studio-plus-input | studio-plus-input:Studio 提示词 + 输入补充;input-full:使用输入全文(包括空串)。 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |