ArchAi3D_Qwen_Person_Position_Control
Closer or farther on a portrait — the dolly node that refuses to redesign the person
- prompt
- position_description
- system_prompt
ArchAi3D_Qwen_Person_Position_Control is the portrait version of the pack's dolly-in/out node, and its most important input is a single boolean with an all-caps tooltip: preserve_identity - "⭐ CRITICAL: Preserve subject's face, clothes, pose, hairstyle. ALWAYS keep TRUE for people!" That's the whole design philosophy in one field. Move the camera closer or farther, and do not, under any circumstances, let the model use the opportunity to replace the person with a slightly different person.
It's the same prompt-builder architecture as everything else in the ArchAi3d Qwen pack: pick a framing preset, choose movement, and it returns a "move the camera closer to the subject" instruction plus a system prompt. Default preset is portrait_standard, described as classic head-to-mid-thigh framing - so the out-of-the-box behavior is a properly-framed portrait at a professional distance, with movement (in/out) handling the push-in or pull-back.
The inputs that matter
- preserve_identity - true, always, for people. It's what makes this a portrait node rather than a product node wearing a costume. The pack's Person_Position preset fills in the identity language that the Object_Position node doesn't bother with.
- movement -
in(closer, tighter crop) orout(farther, more environment). - custom_target - what to push toward: "the subject", "the subject's face", "the person". The face target is where portrait work gets interesting - it's a de facto face-closeup instruction.
- preset - framing presets if you don't want to start from scratch.
- speed -
smooth(standard),cinematic, ornoneto drop the modifier.
Outputs: prompt and system_prompt (wire both into your Qwen encoder), plus position_description.
How it works
It uses the same dolly pattern the pack rates as most reliable for zoom-family moves - distance phrasing over raw degrees - with the identity-preservation clause layered on top and repeated in the system prompt. The psychology is simple and correct: for a person, "move the camera" and "change the person" are the same failure unless the prompt insists otherwise.
Installing it
Ships in ComfyUI-ArchAi3d-Qwen by Amir Ferdos (ArchAi3d):
# ComfyUI Manager: search "ArchAi3d Qwen"
cd ComfyUI/custom_nodes
git clone https://github.com/amir84ferdos/ComfyUI-ArchAi3d-Qwen.git
cd ComfyUI-ArchAi3d-Qwen
pip install -r requirements.txt
Restart. Bring your own Qwen-Image-Edit checkpoint (GGUF-quantized in practice) and the pack's encoder.
Common issues
- The face still drifts.
preserve_identity: trueis a strong instruction, not a guarantee - Qwen-Edit re-emits the whole frame and drifts most on faces outside its training distribution. For real people, budget an inpaint pass to lock the face back in. - Framing isn't a slider. "Closer" is reliably closer; the exact crop is not. Iterate on
movement+ seed rather than expecting fine framing control. - Don't reuse the product node. The Object_Position sibling skips the identity clause entirely. If you wire a person through it, you'll get a redesign. Use this one.
The honest take: it's a small node whose entire value is remembering to say "keep the person the same" when the camera moves. For portrait edits on Qwen-Edit, that's exactly the kind of reminder worth having in the graph.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| preset | COMBO | portrait_standard | Select camera distance preset. Portrait standard is classic head-to-mid-thigh framing. |
| scene_context | STRING | Optional: Person/scene description. Example: 'woman in business attire', 'man standing in office'. Improves consistency. | |
| movement | COMBO | in | Dolly direction: 'in'=move closer (zoom in), 'out'=move farther (zoom out) |
| custom_target | STRING | the subject | Custom target description. Example: 'the subject', 'the subject's face', 'the person' |
| speed | COMBO | smooth | Movement quality: smooth=standard, cinematic=high-end, none=no speed modifier |
| preserve_identity | BOOLEAN | true | ⭐ CRITICAL: Preserve subject's face, clothes, pose, hairstyle. ALWAYS keep TRUE for people! |
| debug_mode | BOOLEAN | false | Print detailed prompt information to console |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | Generated prompt for Qwen Edit 2509 |
| position_description | STRING | Description of the selected position preset |
| system_prompt | STRING | ⭐ v5.0: Research-validated system prompt for person position control! Connect to encoder's system_prompt input. |