ArtificialGuyBR

Home / Blog / Prompting and control

FLUX Prompt Terms for Eye Contact and Looking Away

Master FLUX gaze control with the right positive and negative prompts, IPAdapter tuning, and a reusable scaffold that works across models.

3 sources cited Prompting and control

FLUX Prompt Terms for Eye Contact and Looking Away

TL;DR

How Does FLUX Handle Gaze Compared to SDXL and Pony?

FLUX, SDXL, Pony, and Illustrious all respond to gaze prompting, but each model has distinct preferences. FLUX and SDXL perform best with the phrase "looking at photographer" in the positive prompt, while Pony and Illustrious models may only need "looking-at-viewer" to achieve the same effect. SDXL also benefits from adding "solo" to the positive prompt when targeting a single subject — community-reported testing by c666d found this greatly increased success rates. FLUX does not share this documented boost, though the isolation principle may still apply.

Multi-character scenes are problematic across all models. When you include "eyecontact" in a prompt with more than one person, the result tends to shift toward subjects looking at each other rather than at the viewer. Community-reported tests show this behavior is consistent regardless of which architecture you use.

Pony and Illustrious models understand "winking" to some degree, which gives you an additional negative-prompt lever that FLUX lacks. The c666d article explicitly notes that if "looking-at-viewer" does not work on Pony or Illustrious, the issue likely lies with the base model itself rather than the prompt structure.

Core Prompt Terms That Control Gaze in FLUX

For FLUX, the effective positive prompt is straightforward: "looking at photographer." This single phrase replaces the more literal "eyecontact" terms that fail across all models. The c666d article, which tested across 1.5, 2.0, 2.1, SDXL, 3.0, 3.5, and Flux, consistently found that photographic framing language outperforms direct gaze descriptions.

The universal negative prompt set works across every model family:

Negative TermWhat It SuppressesApplicable Models
BlinkingClosed or partially closed eyesAll
WinkingAsymmetric eye closureAll
staring-stares-stareFixed, unnatural gazeAll
gazing-gazes-gazeDistant or unfocused stareAll
distracted-distractionEyes off-cameraAll
sleeping-unconcious-drunkClosed eyes, head tiltAll
eyecontactCounterproductive literal termAll

Source: civitai.com/articles/5065

FLUX benefits from an additional composition-focused negative layer:

Negative TermWhat It Suppresses
UnawareSubject not engaged with camera
shuteyeClosed eyes
candidUnposed, off-angle
distractedEyes away from viewer
spycameraSurveillance framing
cctvSecurity-camera angle
facing awaySubject turned from viewer

These terms address framing contexts where the model defaults to non-engaged gaze. "Spycamera" and "cctv" describe surveillance perspectives where the subject has no reason to acknowledge the camera. "Candid" and "facing away" explicitly describe non-posed or back-turned compositions.

For multi-character scenes, add crowd-control negatives: team, squad, group, party, mass, crowd. These reduce the model's tendency to create inter-character gaze patterns.

Why Does FLUX Resist Some Gaze Framings?

The c666d article explicitly avoids the word "eyecontact" and all synonyms (POV, POV-eyecontact, looking-at-viewer, looking-back) in negative prompts. The author treats these terms as counterproductive — using them in the negative actually degrades the eye-contact effect in the positive prompt. No official FLUX documentation explains this behavior; the finding comes entirely from community testing.

The "looking at photographer" phrasing works because FLUX's T5-XXL text encoder — which processes up to 512 tokens of natural language — has been trained on photographic captions where subjects are described in relation to the camera operator. This gives the phrase a direct semantic mapping that "eyecontact" lacks. FLUX's dual-encoder architecture (CLIP-L plus T5-XXL, confirmed on the ComfyUI Flux examples page) processes both natural language and CLIP embeddings, but the T5 side dominates for photorealistic subject descriptions.

Using ControlNet and IPAdapter for Gaze Composition

While prompt terms handle the semantic layer of gaze, ControlNet and IPAdapter offer structural control. The stonelax article documents a three-node approach — ControlNet for composition, IPAdapter for style, Img2Img for color consistency — and identifies an "impossible triangle" where raising one node's weight degrades the others.

For gaze specifically, the practical guidance is:

NodeRecommended WeightRole in Gaze ControlSource
ControlNet (Canny or Depth)Above 0.7Maintains facial composition and head anglestonelax, civitai.com/articles/6970
IPAdapterBelow 0.5Style transfer; weak for gaze, affects texturestonelax, civitai.com/articles/6970
Img2ImgAround 0.1 (max 0.2)Color and lighting consistencystonelax, civitai.com/articles/6970

ControlNet with Canny or Depth extraction locks the head angle and eye position from a reference image. This is the most reliable way to enforce a specific gaze direction in FLUX when prompt terms alone are insufficient. The InstantX and Shakker Labs community ControlNet models for FLUX, documented on the ComfyUI Flux examples page, support this workflow.

IPAdapter weight above 0.5 introduces noise without meaningful gaze improvement. Since IPA primarily transfers texture and color rather than spatial layout, it cannot reliably reposition eyes or redirect gaze. Keep it below 0.5 and compensate with prompt matching for any style adjustments.

Img2Img at 0.1 preserves composition while aligning color and lighting with a reference. Exceeding 0.2 begins shifting the entire composition, which destroys any carefully prompted gaze direction. At this weight, the Img2Img pass dominates over both ControlNet and your text prompt.

Building a Reusable Prompt Scaffold

The Rhix article describes a modular prompt architecture that separates concerns into distinct layers. This structure applies directly to gaze control because it isolates the pose layer (where "looking at photographer" lives) from lighting, style, and quality layers.

Scaffold structure:

[Main Subject], [Pose], [Lighting & Background], [Style Descriptors], [Quality Boosts], [Reference Styles]

For gaze-controlled prompts, fill it as:

portrait of a young woman, looking at photographer, soft rim lighting, studio background,
ultra detailed realistic skin, masterpiece, best quality, 8k, RAW photo

The Rhix article recommends photography-inspired vocabulary for both SDXL and FLUX: rim lighting, rule of thirds, soft shadows, shallow depth of field, volumetric light, bokeh, 85mm lens effect. These terms strengthen the photographic context that "looking at photographer" relies on.

For the negative prompt, combine all three layers into a single block:

text, logo, watermark, deformed hands, extra fingers, unnatural eyes, asymmetric face,
blurry, oversaturated, low contrast, jpeg artifacts, Blinking, winking, staring-stares-stare,
gazing-gazes-gaze, distracted-distraction, sleeping-unconcious-drunk, eyecontact,
Unaware, shuteye, candid, distracted, spycamera, cctv, facing away, team, squad, group, crowd

The quality baseline (text, logo, watermark, deformed hands, extra fingers, unnatural eyes, asymmetric face, blurry, oversaturated, low contrast, jpeg artifacts) comes from the Rhix article's documented defaults. The gaze-suppression and composition terms come from the c666d guide.

Common Errors and Fixes

SymptomCauseFixSource
FLUX produces averted gaze despite "eyecontact" in prompt"eyecontact" as a literal term is counterproductive; the model interprets it variablyReplace with "looking at photographer" in positive; use the full universal negative setc666d
Subjects look at each other instead of viewer in group scenes"eyecontact" forces inter-character gaze when multiple subjects are presentRemove "eyecontact" from group prompts; add team/squad/group/crowd to negativec666d
IPA weight produces noisy, unusable imageIPAdapter affects image quality when strength exceeds practical limitsKeep IPA strength below 0.5; compensate with prompt matching insteadstonelax
Img2Img above 0.2 shifts compositionImg2Img weight dominates over ControlNet, altering facial positioningSet Img2Img weight to ~0.1; do not exceed 0.2 for gaze-sensitive workstonelax
Gaze prompt works on SDXL but not FLUXFLUX does not share the "solo" boost that SDXL benefits fromUse "looking at photographer" without relying on "solo"; add descriptive photographic contextc666d

FAQ

What prompt terms make FLUX look at the viewer?

The recommended positive prompt for FLUX is "looking at photographer." Avoid using "eyecontact," "POV," "POV-eyecontact," "looking-at-viewer," or "looking-back" in either the positive or negative prompt — the c666d guide found these terms counterproductive across all model families. Combine with a comprehensive negative prompt covering Blinking, winking, staring-stares-stare, gazing-gazes-gaze, distracted-distraction, sleeping-unconcious-drunk, and eyecontact.

Why does FLUX resist "eye contact" as a literal term?

No official documentation explains this behavior. The c666d community guide explicitly treats "eyecontact" and its synonyms as counterproductive terms that degrade rather than reinforce gaze control. The "looking at photographer" phrasing succeeds because FLUX's T5-XXL text encoder has strong semantic mapping for photographic caption language, where subjects are described in relation to a camera operator.

How do ControlNet, IPAdapter, and Img2Img weights affect gaze in FLUX?

ControlNet with Canny or Depth extraction at above 0.7 is the most reliable structural control for gaze direction. IPAdapter below 0.5 contributes style but cannot reposition eyes. Img2Img at around 0.1 preserves composition while adding color consistency; exceeding 0.2 shifts the entire composition and destroys prompted gaze. The stonelax article describes this as an "impossible triangle" where raising one node degrades the others.

Does "solo" in the prompt improve eye contact?

The c666d guide reports that adding "solo" to the positive prompt greatly increased success rates for SDXL, but this finding is specific to SDXL. FLUX does not share this documented boost. The term may still provide some isolation benefit by reducing competing subjects, but no independent verification exists for FLUX specifically.

What negative prompt words prevent averted gaze in FLUX?

Use two layers of negatives. First, the universal gaze-suppression set: Blinking, winking, staring-stares-stare, gazing-gazes-gaze, distracted-distraction, sleeping-unconcious-drunk, eyecontact. Second, the FLUX composition set: Unaware, shuteye, candid, distracted, spycamera, cctv, facing away. For group scenes, add team, squad, group, party, mass, crowd. This three-layer negative prompt covers mechanical failures (blinking), semantic misdirections (distracted), and framing defaults (spycamera).

How do Pony and Illustrious differ from FLUX for gaze prompting?

Pony and Illustrious models may only need "looking-at-viewer" in the positive prompt to achieve gaze control, and they understand "winking" as a negative term — something FLUX does not reliably interpret. The c666d guide notes that if "looking-at-viewer" fails on Pony or Illustrious, the issue likely lies with the base model quality. FLUX benefits from the more specific "looking at photographer" phrasing and requires the full composition-focused negative set.

Sources

SourceContribution
c666d — Eye contact prompts for all modelsUniversal negative prompt set, "looking at photographer" positive term, "solo" boost for SDXL, multi-character gaze failure behavior, Pony/Illustrious "winking" and "looking-at-viewer" notes
Rhix — Perfect Prompting GPT engineModular prompt scaffold (Subject → Pose → Lighting → Style → Quality → Reference), photography vocabulary recommendations, default negative baseline, FLUX-specific positive prompt format
stonelax — Flux IPAdapter + ControlNet + Img2ImgControlNet/IPAdapter/Img2Img weight tuning, "impossible triangle" tradeoff, composition vs style vs color consistency priorities, community ControlNet model availability
ComfyUI Flux examplesDual text encoder confirmation (CLIP-L + T5-XXL), ControlNet model downloads (InstantX, Shakker Labs, XLab), model file locations, guidance_scale values
HuggingFace — FLUX.1-devModel access, license terms, architecture reference
HuggingFace — FLUX.1-schnellDistilled variant reference, Apache 2.0 license