Nodes/DOGMA Nodes/DOGMA Object Settings v27 — Complete Object / Small Cluster
ComfyUI Node

DOGMA Object Settings v27 — Complete Object / Small Cluster

One category in, every dial out

By axior·Created 4 months ago·Updated 3 days ago· 1
DOGMA Object Settings v27 — Complete Object / Small Cluster
    • group_radius
    • context_px
    • max_source_side
    • target_long_side
    • max_crops
    • stitch_strength
    • vlm_request
    • summary
    category
    restoration_brief

    Two inputs, eight outputs, and it does no pixel work at all. DOGMAObjectSettingsV27 is the pack's lookup table: you hand it a semantic category and a restoration_brief, and it returns the geometry numbers for that category plus the instruction text that gets sent to a VLM for each crop.

    If you've ever wired the same six integers into a crop node and then re-typed them differently the next run, you already understand why this node exists. The category string that comes out of a planner node is a label; this turns the label into a consistent configuration.

    What it emits

    group_radius, context_px, max_source_side, target_long_side, max_crops and stitch_strength - the six INT/FLOAT dials the object-crop node wants - plus vlm_request (the per-crop inspection prompt) and summary (a one-line human description of what it decided).

    The table is keyed on lowercase category text, with a (80, 160, 3584, 2560, 7, 0.95) fallback for anything it doesn't recognise. The interesting rows tell you what the author was thinking: vehicles (96, 176, 4096, 3072, 8, 0.96), people (72, 152, 3584, 2560, 8, 0.96), faces (48, 112, 2304, 2048, 8, 0.96), hands (40, 104, 2048, 1792, 8, 0.96). Small, precise objects get tighter grouping gaps and smaller model canvases; architecture gets a 96px gap and a 3072px long side. And __none__ / none maps to (48, 96, 1536, 1536, 1, 0.0) - one crop and zero stitch strength, i.e. a deliberate no-op slot for categories that shouldn't be generatively touched.

    stitch_strength is the blend weight the stitch node applies. 0.96 in most rows, 0.94 for architecture and street furniture, 0.0 for none. Nothing here reaches 1.0 in v27; the later versions push it to a fully opaque core.

    The vlm_request output is the real payload

    It's a long, composed instruction assembled from four blocks: a universal one ("Inspect this OBJECT-CENTRIC crop from an already restored master… it is NOT a scene tile"), a per-category specific paragraph, a historical context line, and an absolute text lock. Then a per-family paragraph: vehicles get "repair malformed bodies, wheels, windows, fused vehicles… preserve vehicle count, positions, directions"; people get "never remove or add anyone"; faces get "do not invent facial detail where the face is too small or occluded".

    The text lock is the one to notice, because it's the pack's whole philosophy in a sentence: "do not rewrite, rename, respell, complete, infer or invent lettering, numbers, logos, building names, shop signs, posters, advertisements or license-plate characters. Blurry or unreadable glyphs stay the same blurry/ambiguous glyphs." Wire this string to a vision model running over each crop, take its answer, and build the local Klein instruction from that.

    restoration_brief is accepted but not read by this version's text builder - the pack keeps the socket so your existing wiring survives across versions. Pass it anyway; the later versions in the same file do use it.

    Install

    ComfyUI Manager → DOGMA Nodes, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/axior/ComfyUI-DOGMA-Nodes
    # restart ComfyUI
    

    No dependencies beyond PyTorch and ComfyUI itself. The pack README documents none of the semantic nodes, so summary is genuinely the best documentation you'll get for what a given category selected - read it in a text preview node while you're tuning.

    Gotchas

    Spelling is behaviour. The lookup is substring matching on a lowercased string. "vehicle" hits the vehicles row; "Vehicles & Traffic" also hits it (the substring is there); "street furniture" is its own row, so labelling traffic lights as "objects" quietly gives you the generic 7-crop settings. If summary says v27 objects: … you're on the fallback.

    Keep the category string consistent across the graph. The crop node uses it for the per-crop object cap and the stitch node uses it for its blend policy. A typo in one place and not the other is the kind of bug that shows up as "why is this crop stitched at 94% alpha".

    The CFG 4 default assumes the base model. The summary line the author writes ends with "Base 9B local img2img is intended downstream." That's Flux 2 Klein base, at roughly 20 steps and denoise ~0.35. If you're on the distilled checkpoint instead, CFG 1 is the correct setting and 4 will cook the crop.

    CategoryDOGMA/Semantic Detailer

    Inputs (2)

    NameTypeDefaultDescription
    categorySTRING
    restoration_briefSTRING

    Outputs (8)

    NameTypeDescription
    group_radiusINT
    context_pxINT
    max_source_sideINT
    target_long_sideINT
    max_cropsINT
    stitch_strengthFLOAT
    vlm_requestSTRING
    summarySTRING