Beta

Image & realism

How to fix plastic skin and waxy AI images

Plastic skin is usually a pipeline problem, not a missing magic word. Strip the workflow back to the base model, hold the seed still, and find the first stage that turns skin into wax. Grain and pore prompts come later—if they are needed at all.

Based on official documentation, public benchmarks where relevant, and corroborated practitioner reports where useful. No placement in these guides is paid.

The short answer

What I would pick

Start with the base checkpoint at its documented settings and native resolution. Turn off every LoRA, face detailer, restoration node, image-to-image pass, and AI upscaler. Generate the same seed with a short photographic prompt.

If that clean image already looks plastic, change the prompt, lighting, or base model. If it looks fine, add the disabled pieces back one at a time. That boring A/B test fixes more waxy faces than a 40-word negative prompt ever will.

On this page

Skip to the part you need

  1. First, name the actual failure
  2. Build a clean baseline
  3. Remove the beauty-prompt trap
  4. Use settings for your exact model
  5. Audit LoRAs and face detailers
  6. Control denoise and upscaling
  7. A minimal ComfyUI diagnosis
  8. Z-Image, FLUX.2, and hosted editors
  9. Match the symptom to the fix

Do not diagnose by vibe

First, name the actual failure

“Plastic” gets used for several different failures. They do not have the same fix. Zoom out before you zoom into pores and decide which problem you actually have.

What you seeLikely causeFirst test
Perfectly smooth cheeks with glossy highlightsBeauty-language bias, flat light, or an over-strong portrait LoRARemove beauty terms and LoRAs; use one directional light
Sharp pores stamped evenly across the whole faceOvercooked guidance, detailer, sharpening, or “skin texture” prompt spamReturn to the base sampler output before enhancement
A natural first pass that becomes waxy after enlargementFace restoration or generative upscaling is replacing textureCompare a plain pixel upscale against the enhanced branch
Face looks pasted onto a believable roomLighting, color, or sharpness does not match the sceneFix the shared light direction and local contrast
Every subject gets the same polished faceCheckpoint or dataset biasRun the same short prompt on a neutral base model

Skin does not look real because every pore is visible. It looks real when the texture, softness, specular highlights, color variation, and lighting all belong to the same photograph. An aggressively sharpened face in a softly focused room is still synthetic.

Remove variables

Build a clean baseline before fixing anything

Save the original workflow, then make a diagnostic copy. Keep the seed, model, dimensions, sampler, scheduler, steps, and prompt fixed. Remove every optional component:

  • all character, realism, skin, lighting, and style LoRAs;
  • face detailers, face restoration, CodeFormer/GFPGAN-style repairs, and sharpen nodes;
  • ControlNet, IP-Adapter, reference-style transfer, and prompt enhancers;
  • high-resolution fixes, tiled diffusion, image-to-image, and generative upscaling;
  • automatic color grading, film grain, bloom, and post-processing.

Generate at a resolution recommended for that exact model. Do not diagnose a model while forcing an odd legacy resolution copied from an SD 1.5 workflow. Make a four-image batch, but keep one seed as the control image for every later change.

A changing seed is not a comparison. If the new image improves, you need to know whether your setting fixed it or whether you simply rolled a friendlier face.

Prompt less, direct more

Remove the beauty-prompt trap

A common “realism” prompt is actually a beauty-advertising prompt wearing a camera badge. Words such as flawless, perfect face, porcelain skin,airbrushed, glowing skin, 8K, and hyper-detailed all reward the polished surface you are trying to remove. Stacking pores,blemishes, and wrinkles on top often produces a texture decal instead.

Before: beauty-prompt soupmasterpiece, best quality, stunning flawless woman, perfect symmetrical face, porcelain glowing skin, ultra detailed pores, hyperrealistic, sharp focus, 8K, cinematic, professional studio lighting
After: one photographic situationClose portrait of an adult woman beside an apartment window, relaxed expression, soft directional morning light from camera left, 50mm lens feel, shallow but believable depth of field, natural skin and fabric texture, restrained color, unretouched editorial photograph

The second prompt gives the model a light source, camera position, mood, and material context. “Unretouched” is a useful nudge, not a guarantee. If the checkpoint was trained toward glossy beauty work, prose cannot fully argue it out of that prior.

Keep negative prompting equally restrained where the model supports it. Name visible failures—airbrushed skin, wax figure, flat frontal beauty light—instead of pasting a generic negative list that also suppresses contrast, texture, and photographic noise. Distilled models may ignore or handle negative conditioning differently, so check the model card first.

Model cards beat folklore

Use guidance and steps for your exact model

More guidance does not mean more realism. Guidance pushes the result harder toward the conditioning; taken too far, it can harden edges, crush subtle gradients, and exaggerate every “detailed skin” instruction. More steps can also be pointless on a distilled model designed for a short schedule.

Model familySane diagnostic starting pointCommon mistake
Z-Image-TurboOfficial example: 9 requested steps / 8 forwards and guidance 0Applying base-model CFG recipes to the distilled Turbo checkpoint
Z-Image foundation modelOfficial range: 28–50 steps, guidance 3–5; test CFG normalization for realismRunning an arbitrary high CFG because another architecture liked it
FLUX.2 Klein distilledStart from the current official template for the exact 4B/9B variantCopying a Base, dev, FLUX.1, or SDXL schedule into a distilled workflow
FLUX.2 Klein Base / devUse the variant-specific example, then change one sampler variable at a timeTreating a trainable Base model like the four-step production model
Hosted editorsUse the service defaults and make a precise edit requestInventing CFG advice for a system that does not expose CFG

Once the official baseline works, sweep one setting over a small range with the same seed. Compare the full frame at 100%, not cropped faces posted at different zoom levels. Stop when added guidance makes the prompt louder but the photograph less coherent.

The stack can be the bug

Audit LoRAs and face detailers separately

LoRAs are additive influences, and ComfyUI can chain several of them. A character LoRA, a realism LoRA, a skin LoRA, and a lighting LoRA may each look fine alone while the combined stack collapses toward the same glossy portrait. Set every LoRA strength to zero, confirm the baseline, then restore one at a time.

  1. Add the identity LoRA first and test several strengths against the control seed.
  2. Add the style LoRA only if it solves a problem the base model did not solve.
  3. Compare both the model and text-encoder strength where the loader exposes them.
  4. Delete redundant “realism enhancer” LoRAs before trying to balance five weights.

A face detailer is a second generation, not a neutral cleanup. It can change age, identity, makeup, light direction, and texture. Save the pre-detailer image and compare it directly. If only the detailed face looks waxy, lower its denoise or prompt pressure, expand and feather the mask, or remove the pass. Do not compensate by sharpening the result again.

If your own character LoRA produces plastic skin at every strength, inspect the training data. Repeated beauty filters, compressed social-media images, overexposed cheeks, and one dominant studio setup get learned. That is a dataset problem, not a sampler problem.

Second passes replace pixels

Control denoise, restoration, and upscaling

In ComfyUI image-to-image, lower denoise preserves more of the source while higher denoise allows a larger change. That does not make one number universally correct. It gives you a clean test: start low, increase in small increments, and stop before the face becomes a new glossy interpretation.

  • Need only more pixels? Compare a non-generative resize or a restrained ESRGAN-style upscale first. It should not redesign the person.
  • Need local texture repair? Mask the cheek or forehead and inpaint it. Keep the surrounding light and color visible to the model.
  • Need a larger re-render? Use image-to-image at conservative denoise and inspect identity, light direction, hairline, and makeup—not just apparent sharpness.
  • Need web compression cleanup? Do that before aggressive enhancement; an upscaler may faithfully amplify ringing, smoothing, and block artifacts.

Film grain can unify a finished image, but it cannot repair flat material response. Add it last and toggle it off during diagnosis. Otherwise grain simply hides the evidence while the underlying face still reads like vinyl.

A workflow you can actually debug

Use this minimal ComfyUI diagnosis

Clean text-to-image branchLoad exact base model → encode short positive/negative prompts → create native-size latent → model-recommended sampler and schedule → VAE Decode → Save Image
  1. Queue the clean branch and record the seed plus every visible sampler value.
  2. Duplicate it and change only the prompt. If that fixes the skin, stop there.
  3. Restore the identity LoRA in a new branch. Compare at equal seed and dimensions.
  4. Add the detailer, image-to-image pass, and upscaler in separate later branches.
  5. Save each output with the workflow metadata; label the first branch that fails.

This is deliberately unglamorous. A giant downloaded graph may have twenty places where texture is replaced. The minimal graph tells you whether the base model and prompt can make a believable portrait before those places exist.

Do not mix recipes

Z-Image, FLUX.2, and hosted editors need different treatment

Z-Image-Turbo
Use its distilled recipe: guidance zero and the short official schedule. If the skin is too polished, simplify the beauty language and light before adding steps. The foundation Z-Image is a different checkpoint with CFG and a longer schedule.
Z-Image foundation model
Work inside the official guidance and step ranges first. Its repository specifically exposes CFG normalization as a realism-related choice, so test that switch with the same seed instead of guessing from another model family.
FLUX.2
Confirm whether the file is Klein distilled, Klein Base, or dev. The distilled model is for fast inference; Base is the flexible training target; dev is much larger. A workflow named only “FLUX” is not specific enough to trust.
Nano Banana and other hosted editors
You cannot inspect their hidden sampler stack. Give a local, visual edit request: preserve identity, pose, framing, and light; remove airbrushed smoothing; restore subtle natural skin variation. If repeated edits keep polishing the whole face, mask or crop the target where supported, or return to an earlier source image.

A faster final pass

Match the symptom to the fix

FailureChange nextDo not reach for first
Base output is smooth and glossyPrompt, directional light, official settings, then base modelGrain or sharpening
Only LoRA output is waxyWeight, combination, checkpoint compatibility, training dataAnother realism LoRA
Only face-detailer output is waxyDenoise, prompt pressure, mask, or remove detailerA second face-restoration pass
Only upscale output is waxyUse a restrained/non-generative upscale or lower second-pass denoiseExtra pore prompting
Skin is detailed but face still looks pasted onMatch scene light, color, focus, and sharpnessMicrotexture
Every configuration gives the same beauty faceSwitch checkpoint or retrain the biased LoRA datasetEndless sampler sweeps

The practical rule is simple: repair the earliest stage that creates the defect. If the clean model output is good, protect it. If the clean output is bad, no downstream detail stack deserves your time.

Research notes

Primary sources and further reading

Model names, licenses, limits, and prices move quickly. These are the sources used for the dated market check above; confirm live pricing and terms before spending money.