Nodes/ComfyUI-ArchAi3d-Qwen/ArchAi3D_Qwen_Person_Position_Control
ComfyUI Node

ArchAi3D_Qwen_Person_Position_Control

Closer or farther on a portrait — the dolly node that refuses to redesign the person

By amir84ferdos·Created 11 months ago·Updated 5 months ago· 70
ArchAi3D_Qwen_Person_Position_Control
    • prompt
    • position_description
    • system_prompt
    presetportrait_standard
    scene_context
    movementin
    custom_targetthe subject
    speedsmooth
    preserve_identitytrue
    debug_modefalse

    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) or out (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, or none to 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: true is 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.

    CategoryArchAi3d/Camera/Person

    Inputs (7)

    NameTypeDefaultDescription
    presetCOMBOportrait_standardSelect camera distance preset. Portrait standard is classic head-to-mid-thigh framing.
    scene_contextSTRINGOptional: Person/scene description. Example: 'woman in business attire', 'man standing in office'. Improves consistency.
    movementCOMBOinDolly direction: 'in'=move closer (zoom in), 'out'=move farther (zoom out)
    custom_targetSTRINGthe subjectCustom target description. Example: 'the subject', 'the subject's face', 'the person'
    speedCOMBOsmoothMovement quality: smooth=standard, cinematic=high-end, none=no speed modifier
    preserve_identityBOOLEANtrue⭐ CRITICAL: Preserve subject's face, clothes, pose, hairstyle. ALWAYS keep TRUE for people!
    debug_modeBOOLEANfalsePrint detailed prompt information to console

    Outputs (3)

    NameTypeDescription
    promptSTRINGGenerated prompt for Qwen Edit 2509
    position_descriptionSTRINGDescription of the selected position preset
    system_promptSTRING⭐ v5.0: Research-validated system prompt for person position control! Connect to encoder's system_prompt input.