Nodes/kentskooking-nodes/Explorer Conditioning Sampler
ComfyUI Node

Explorer Conditioning Sampler

Crossfade two prompts over one latent — no frame-by-frame loop required

By Kentskooking·Created 10 months ago·Updated 15 days ago· 8
Explorer Conditioning Sampler
  • model
  • positive_a
  • positive_b
  • negative
  • latent_image
  • wave_config
  • positive_c
  • latent_batch
iteration_count8
batch_size1
seed0
steps20
sampler_name
scheduler
cfg8.0
denoise1.00

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.

Categorykentskooking/sampling

Inputs (15)

NameTypeDefaultDescription
modelMODEL
positive_aCONDITIONING
positive_bCONDITIONING
negativeCONDITIONING
latent_imageLATENT
wave_configWAVE_CONFIG
iteration_countINT81–10000
batch_sizeINT11–1024
seedINT00–18446744073709550000
stepsINT201–10000
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
cfgFLOAT8.00–100
denoiseFLOAT1.000–1
positive_coptCONDITIONING

Outputs (1)

NameTypeDescription
latent_batchLATENT