ComfyUI Node

sum_stack_Wan

Sum_stack_Wan

By cardenluo·Created 2 years ago·Updated a day ago· 324
sum_stack_Wan
  • context
  • model
  • funControl
  • funControl22
  • funInpaint
  • ImageToVideo
  • FirstLastFrame
  • Vace
  • AnimateVideo
  • CameraImage
  • Track
  • SoundImage
  • SoundImage_ex
  • HuMoImage
  • Phantom
  • context
  • model
  • positive
  • negative
  • latent
  • vace_trim_latent
  • trim_image
  • video_frame_offset

Wan is where local video generation consolidated: Alibaba's Apache 2.0 family, frozen at 2.2 but still the quality reference for people and characters, and the base under a pile of 2026 models. The problem is that "Wan" is really a dozen different generation modes - image-to-video, first/last frame, VACE control, animate, track, camera moves, sound-driven - each with its own node chain in stock ComfyUI. sum_stack_Wan is the Apt_Preset hub that collapses that whole family into one controller. You pick a mode, feed it the matching token from a Stack_Wan*ToVideo config node, and this node merges everything into the conditioning, latent, and model the sampler runs.

The README calls it "General Control wan Stack: All wan video generation nodes officially supported." That's not marketing - the input list really does cover the entire first-party task-model line.

What it actually does

It consumes the context and the mode token you connect, then builds the Wan conditioning for that mode. Each input is a typed token produced by a sibling config node in the pack's 😺backup stack set - the config nodes bundle width/height/length/images/settings, this hub applies them:

  • ImageToVideo - image-to-video, from Stack_WanImageToVideo.
  • FirstLastFrame - interpolate between a start and end frame, from Stack_WanFirstLastFrameToVideo.
  • Vace - VACE reference/control video conditioning, from Stack_WanVaceToVideo.
  • funControl / funControl22 / funInpaint - Wan 2.1/2.2 Fun Control and Fun Inpaint tokens.
  • AnimateVideo - the Wan 2.2 Animate character-animation path.
  • CameraImage - camera-move conditioning.
  • Track - Wan Track motion-trajectory conditioning, from Stack_WanTrackToVideo.
  • SoundImage / SoundImage_ex / HuMoImage - sound-to-video and human-motion paths; SoundImage_ex comes from Stack_WanSoundImageToVideoExtend.
  • Phantom - the Phantom subject-tracking input.

You only connect the inputs for the mode you're running. The stack reads the context's model (Wan 2.2 Unet + clip1, loaded via sum_load_simple), applies the mode's conditioning, and writes back the context plus three handy integers: vace_trim_latent, trim_image, and video_frame_offset - the frame numbers you need when you're stitching this segment back into a longer take.

The inputs that matter

The context and the one mode token for whatever you're generating. Also model if you want to override. Everything else is "connect only what you need."

The outputs that matter

context (with latent + conditioning), model, positive, negative, latent, and the three trim/offset integers.

Wiring it in

sum_load_simple (Wan 2.2) → prompt conditioning → sum_stack_Wan with your mode token → sum_Ksampler. The config node feeds the hub, not the sampler.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git
cd ComfyUI-Apt_Preset
pip install -r requirements.txt   # Windows: double-click install.bat

Or ComfyUI Manager → ComfyUI-Apt_Preset. ComfyUI-GGUF helps if you're running the 14B quantized (the practical way to run Wan on 10–12GB).

Common issues

The most common beginner mistake is connecting multiple mode tokens at once and expecting a blend - it doesn't blend; it applies what's connected in a defined order, and multiple tokens usually means one silently wins. Connect one mode, run it, then switch. Second: this node outputs no image - the trim integers and context are the deliverables, and if you're staring at nothing, the problem is either a missing mode token or a config node upstream that never got its images/audio attached. And remember Wan's 81-frame native context: whatever length you set on the config node, the model still thinks in ~81-frame chunks, so plan extensions as chains, not one giant generation.

CategoryApt_Preset/chx_tool

Inputs (15)

NameTypeDefaultDescription
contextRUN_CONTEXT
modeloptMODEL
funControloptFUNCONTROL
funControl22optFUNCONTROL22
funInpaintoptFUNINPAINT
ImageToVideooptIMAGETOVIDEO
FirstLastFrameoptFIRSTLASTFRAME
VaceoptWANVACE
AnimateVideooptANIMATEVIDEO
CameraImageoptCAMERAIMAGE
TrackoptWANTRACKT
SoundImageoptSOUNDIMAGE
SoundImage_exoptSOUNDIMAGE_EX
HuMoImageoptHUMOIMAGE
PhantomoptPHANTOM

Outputs (8)

NameTypeDescription
contextRUN_CONTEXT
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
vace_trim_latentINT
trim_imageINT
video_frame_offsetINT