Nodes/comfyui-portrait-master/Portrait Master: Skin Details
ComfyUI Node

Portrait Master: Skin Details

The Portrait Master node that separates a photo from a plastic doll

By florestefano1975·Created 3 years ago·Updated 7 months ago· 1,227
Portrait Master: Skin Details
    • text_out
    natural_skin0.00
    bare_face0.00
    washed_face0.00
    dried_face0.00
    skin_details0.00
    skin_pores0.00
    dimples0.00
    wrinkles0.00
    freckles0.00
    moles0.00
    skin_imperfections0.00
    skin_acne0.00
    tanned_skin0.00
    skin_tone-
    skin_texture-
    skin_shine-
    eyes_details0.00
    iris_details0.00
    circular_iris0.00
    circular_pupil0.00
    activetrue
    load_preset
    save_preset_as
    save_presetfalse
    text_in
    seed

    "Portrait Master: Skin Details" is where the photorealism actually happens in this pack. Base Character tells the model who the person is; this node tells it that the person's skin has pores, wrinkles, a tone, and a texture - that it's skin a camera could photograph, not an airbrushed doll surface. If your portraits come out looking waxy or plastic, this is the node you were missing.

    It sits in the chain between Base Character and Style & Pose: text_out from one feeds text_in of the next, and eventually the whole thing lands in a CLIPTextEncode. It's the second-most-important node in the pack after Base Character, and the one that most directly changes how "real" the result reads.

    How it works

    Same string-builder mechanism as the rest of the pack - no model, no inference, just dropdowns and sliders assembled into a weighted prompt, lowercased, returned as text_out.

    The useful mechanics: every slider here emits (term:weight) only when it's above 0. skin_pores at 1.0 appends (skin pores:1.0); at 0 it contributes nothing. So the node behaves like a row of on/off switches that also control emphasis. The three enum dropdowns - skin_tone (83 options), skin_texture (74), skin_shine (53) - are the ones that actually place the skin: tone anchors the complexion, texture decides whether it reads as smooth, grainy, or weathered, and shine controls the highlight behavior (wet-looking skin vs matte). Those emit at :1.05.

    The eye details deserve a mention because they're the pack's quiet superpower. eyes_details, iris_details, circular_iris, and circular_pupil are what stop eyes from rendering as black voids or uncanny voids - iris detail especially is what makes a portrait feel seen.

    The inputs that matter

    You don't need all 20. The high-leverage set:

    • skin_pores - the single biggest "this is a photo" lever. Even 0.5–0.8 reads as texture.
    • skin_tone / skin_texture - set the complexion and surface once; don't fight them with weights.
    • skin_imperfections and wrinkles - a little of either kills the "AI skin" look fast. A lot of them ages the subject.
    • eyes_details / iris_details - cheap realism, always worth a small value.

    The README's own tip is worth honoring: high skin-detail values can override your shot setting and drag the framing toward close-up. If you set full body and still get a face, this node is the usual suspect - drop the detail sliders and add (closeup, close up, close-up:1.5) to the negative prompt to keep the model honest.

    Installing it

    Skin Details ships inside comfyui-portrait-master, so install the pack once:

    cd ComfyUI/custom_nodes
    git clone https://github.com/florestefano1975/comfyui-portrait-master
    

    Then restart ComfyUI. ComfyUI Manager works too - search "Portrait Master" by florestefano1975. No dependencies or model files; the whole pack is plain Python plus dropdown lists.

    Common issues

    • Everything looks plastic regardless of settings. Usually means the sliders are still at 0 - nothing gets appended unless a weight is above 0, and - means "skip." Turn a few on.
    • Full-body shots collapse into close-ups. Back off skin_pores and eyes_details, or the negative-prompt trick above.
    • Loaded workflows show strange values. Across the pack's 3.x restructure, old saves can load dropdowns with stale entries. Re-set the fields.
    • Your text input comes back lowercase. The node lowercases the entire output, including anything you feed into text_in - not a bug, just how it's built.
    CategoryAI WizArt/Portrait Master

    Inputs (26)

    NameTypeDefaultDescription
    natural_skinFLOAT0.000–2
    bare_faceFLOAT0.000–2
    washed_faceFLOAT0.000–2
    dried_faceFLOAT0.000–2
    skin_detailsFLOAT0.000–2
    skin_poresFLOAT0.000–2
    dimplesFLOAT0.000–2
    wrinklesFLOAT0.000–2
    frecklesFLOAT0.000–2
    molesFLOAT0.000–2
    skin_imperfectionsFLOAT0.000–2
    skin_acneFLOAT0.000–2
    tanned_skinFLOAT0.000–2
    skin_toneCOMBO-83 options: -, random 🎲, alabaster, angular, angular, arched, +77
    skin_textureCOMBO-74 options: -, random 🎲, acne-prone, aged, angular, angular, +68
    skin_shineCOMBO-53 options: -, random 🎲, angular, angular, arched, arched, +47
    eyes_detailsFLOAT0.000–2
    iris_detailsFLOAT0.000–2
    circular_irisFLOAT0.000–2
    circular_pupilFLOAT0.000–2
    activeBOOLEANtrue
    load_presetCOMBO1 options: -- disabled --
    save_preset_asSTRING
    save_presetBOOLEANfalse
    text_inoptSTRING
    seedoptINT

    Outputs (1)

    NameTypeDescription
    text_outSTRING