Explorer Conditioning Sampler
Crossfade two prompts over one latent — no frame-by-frame loop required
- model
- positive_a
- positive_b
- negative
- latent_image
- wave_config
- positive_c
- latent_batch
Prompt-to-prompt morphing normally means building a loop: encode prompt A, sample a few steps, swap in prompt B, re-sample, repeat, and hope the seams don't show. Explorer Conditioning Sampler skips the loop entirely. You give it two (or three) positive conditionings and it walks a smooth crossfade between them over a single latent, outputting a whole batch of intermediate states in one go.
It's the pack's answer to "what does it look like between these two prompts," and it's genuinely nice for three things: prompt-bleed studies (where does "photoreal woman" turn into "oil painting" mid-traversal), building a grid of style variations from one image, and generating the frames of a slow prompt-morph video.
How it works
The sampler reads a wave_config from the Explorer Conditioning Wave Controller, which defines the curve (linear, sine, or ease-in-out) and the start/end strengths for each prompt branch. For every iteration it computes a crossfade weight for A and B (and C if you plugged one in), then builds a weighted-concat conditioning - the same semantics as the native ConditioningConcat node, with A and B's embeddings scaled and concatenated, and pooled outputs blended. Then it runs a KSampler pass at that blended conditioning.
The clever part is how it batches: instead of sampling one latent per state, it renders batch_size states in a single KSampler call with identical noise, so the whole traversal comes out coherent - no per-frame seed flicker. The path logic matters too. No C branch: it's a straight A→B. With C: A→B then B→C. With C and loop_video on: A→B→C→A, so the strip loops seamlessly.
Inputs that matter
- positive_a / positive_b - the two prompt conditionings you're crossfading. positive_c is optional.
- iteration_count - how many states along the path to render. 8 is fine for a quick grid; 60+ gives you a video's worth of frames.
- batch_size - how many states render per KSampler call. Bigger is faster but hungrier on VRAM; the sampler just chunks iterations into batches.
- denoise - defaults to 1.0 (full redraw). Drop it toward 0.3–0.6 and you're morphing an existing image instead of regenerating from noise.
- seed, steps, sampler_name, scheduler, cfg - the usual sampler dials. negative is the shared negative conditioning.
Output is a single latent_batch, one latent per state along the traversal. Decode it and you can grid the results or string them into video.
Installing it
Ships in kentskooking-nodes - ComfyUI Manager → search kentskooking-nodes, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Kentskooking/kentskooking-nodes
Restart after. No models to download; the pack only leans on ComfyUI's own torch/numpy/Pillow/safetensors.
Common issues
- "Embedding size mismatch at branch X" - A and B came from incompatible text encoders (e.g. one from SDXL's text encoder, one from a Flux setup). Both branches need to come from the same encoder.
- "conditioning at index X is None" - you left a branch unconnected or fed it an empty conditioning. The sampler checks every branch before it starts.
- Branches with multiple cond entries - it only uses the first entry from each non-base branch and prints a warning. If your conditioning carries extra entries, that's expected, not an error.
The one to remember: if you connect C but never wire a strength into the controller, C sits at strength zero and your "morph" quietly becomes an A→B. Set positive_c_start/positive_c_end in the controller or don't bother plugging C in.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive_a | CONDITIONING | — | |
| positive_b | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| latent_image | LATENT | — | |
| wave_config | WAVE_CONFIG | — | |
| iteration_count | INT | 81–10000 | — |
| batch_size | INT | 11–1024 | — |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| cfg | FLOAT | 8.00–100 | — |
| denoise | FLOAT | 1.000–1 | — |
| positive_copt | CONDITIONING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent_batch | LATENT | — |