Nodes/ComfyUI_MileHighStyler/Camera Styler (Advanced)
ComfyUI Node

Camera Styler (Advanced)

127 physical camera bodies for photorealism

By TripleHeadedMonkey·Created 3 years ago·Updated about a year ago· 66
Camera Styler (Advanced)
    • text_positive_g
    • text_positive_l
    • text_positive
    • text_negative_g
    • text_negative_l
    • text_negative
    text_positive_g
    text_positive_l
    text_negative
    camera
    negative_prompt_toBoth
    log_prompttrue

    Of all the stylers in this pack, this is the one with a real photorealism argument behind it. CameraStylerAdvanced is a 127-entry dropdown of actual camera bodies - Canon EOS R5, Canon EOS 90D, Canon EOS-1D X Mark III, and on down the list. Why does that matter? Because naming a physical piece of camera equipment is one of the single highest-leverage things you can put in a prompt. The community consensus on realism is blunt about it: emotional and quality words ("realistic," "candid," "8k") do almost nothing, but a concrete camera name drops the model out of its glossy beauty-default and toward something that looks shot rather than rendered.

    So this menu is a fast way to A/B that lever. Pick a body, generate, pick another, compare. It's more grounded than most of the pack.

    The "Advanced" part

    This node only comes in the Advanced flavor, which means it's wired for SDXL's two text encoders - the big OpenCLIP-G and the smaller CLIP-L that SDXL runs together. You get text_positive_g and text_positive_l instead of one box, plus negative_prompt_to (Both / G only / L only) to steer the negative. Feed both encoders the same subject to start; split only if you have a reason. And know that the split means nothing off SDXL - on SD 1.5 there's one encoder, and on 2026 LLM-encoded models the CLIP-G/CLIP-L world doesn't exist.

    How it works

    It's a fork of SDXL Prompt Styler. Each camera is a JSON template with a {prompt} slot; your subject drops in, the camera phrase gets wrapped at a strong weight (~2.0), and the node emits rewritten prompt strings. Just text - nothing loads a model. A caveat worth knowing: some entries are odd auto-generated-looking variants ("Canon EOS R5 (Unique Variant)"), so trust the plain body names over the weird ones.

    Inputs and outputs that matter

    • camera - the 127-entry body list. no camera = off.
    • text_positive_g / text_positive_l - your subject, once per SDXL encoder.
    • negative_prompt_to - Both (default), G only, or L only.

    log_prompt prints the built prompt. The node returns six strings: text_positive_g, text_positive_l, combined text_positive, and the three negatives. Route _g/_l to an SDXL dual CLIP Text Encode, or use the combined text_positive / text_negative.

    Installing it

    ComfyUI Manager: search ComfyUI_MileHighStyler, install, restart. Or:

    cd ComfyUI/custom_nodes && git clone https://github.com/TripleHeadedMonkey/ComfyUI_MileHighStyler
    

    No models, no dependencies - Python and JSON. Nodes appear under ali1234/stylers.

    Where people get burned

    • A camera name is a look, not a spec. The model can't actually simulate a sensor. It's pulling from photos captioned with that body, so newer, well-photographed bodies steer harder than obscure ones. If a camera does nothing, it's underrepresented in training - swap to a common one.
    • This is where the Advanced pays off, on SDXL. If you're on SDXL and chasing realism, the G/L split plus a camera name is a legitimate combo. Off SDXL, drop the Advanced wiring - but the camera phrase still helps as plain text, so keep the name even if you ditch the node.
    • Don't stack five stylers on top. A camera at 2.0 is already pulling hard toward "photograph." Pile on a filter and a filmstock menu too and you get mush.
    Categoryali1234/stylers

    Inputs (6)

    NameTypeDefaultDescription
    text_positive_gSTRING
    text_positive_lSTRING
    text_negativeSTRING
    cameraCOMBO127 options: no camera, Canon EOS 90D, Canon EOS M50, Canon EOS M50 Mark II, Canon EOS M6 Mark II, Canon EOS R5, +121
    negative_prompt_toCOMBOBoth3 options: Both, G only, L only
    log_promptBOOLEANtrue

    Outputs (6)

    NameTypeDescription
    text_positive_gSTRING
    text_positive_lSTRING
    text_positiveSTRING
    text_negative_gSTRING
    text_negative_lSTRING
    text_negativeSTRING