照片涂鸦参数
One box for seed, size, CFG and prompt — the params node that keeps a doodle workflow from drifting
- seed
- width
- height
- cfg
- prompt
This is a plumbing node, and it's honest about it. PhotoDoodleParams is a single box that holds the five values every PhotoDoodle workflow needs in two or three places at once - seed, width, height, cfg and the prompt - and passes each of them through untouched to its own output. No math, no pixels touched, no hidden behavior. The whole implementation is a return statement.
So why does it exist? Because in the standard doodle graph, the canvas size appears in at least two places - EmptySD3LatentImage and PhotoDoodleCrop - and the seed, CFG and prompt feed the sampler stack. Edit those in separate widgets and eventually you'll change one and not the others, then spend twenty minutes wondering why the output looks wrong. Bundle them here, wire the outputs to each consumer, and there's exactly one place to edit. It's the same idea as ComfyUI's built-in PrimitiveInt/PrimitiveString value nodes, just pre-bundled with the pack's workflow in mind: one authoritative source, fanning out to many consumers.
The five inputs, which is also the five outputs:
seed(INT) - feeds your noise node. Set it tofixedand reruns stay reproducible.width/height(INT, default 512, step 8) - feed both the empty latent and PhotoDoodleCrop so the canvas and the doodle can't drift apart. This is the sync problem this node is best at solving.cfg(FLOAT, default 7.0) - the guidance strength, wired into your guider. Heads-up: 7.0 is an SDXL-era number. The pack's own example workflow runs Flux at guidance 3.5, so if your output looks overcooked, this is the first place to look.prompt(STRING, multiline) - the text that goes into CLIPTextEncode. The multiline box is where the doodle LoRA trigger word lives, always at the very end:Add a black stroke to the bear. by sksedgeeffect.
Outputs come back in the same order with the same names - seed, width, height, cfg, prompt - one wire per value, nothing clever.
Install is the shared pack story: search ComfyUI-SC-PhotoDoodle in ComfyUI Manager, or
cd ComfyUI/custom_nodes
git clone https://github.com/latentcat/ComfyUI-SC-PhotoDoodle
then restart. No extra pip packages; it's the same install as PhotoDoodleCrop and PhotoDoodleSamplerAdvanced.
A couple of things to know before you lean on it. First, it's a pass-through, not a keeper: nothing runs if you don't wire the outputs onward, and there's no control_after_generate logic on the seed - whatever you type is what goes out. Second, if you only need one value centralized (say just the size), the cheaper move is right-clicking a widget and using Convert widget to input; PhotoDoodleParams earns its keep when you want all five locked together, which is most of the time in this workflow. It's the kind of node you don't notice when it's there - and that's exactly the point.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 00–18446744073709550000 | — |
| width | INT | 51264–8192 | — |
| height | INT | 51264–8192 | — |
| cfg | FLOAT | 7.00–100 | — |
| prompt | STRING | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| seed | INT | — |
| width | INT | — |
| height | INT | — |
| cfg | FLOAT | — |
| prompt | STRING | — |