Nodes/toobusy · 너무바쁜베짱이/toobusy Wan Animate 2 Long Sampler
ComfyUI Node

toobusy Wan Animate 2 Long Sampler

Long Wan Animate 2 clips without hand-wiring the chunking

By nicekriss·Created about a year ago·Updated 3 days ago· 16
toobusy Wan Animate 2 Long Sampler
  • model
  • positive
  • negative
  • sampler
  • sigmas
  • vae
  • reference_image
  • pose_video
  • positive_pose
  • clip_vision_output
  • clip_vision_output_pose
  • continue_video
  • images
  • frame_count
  • chunk_count
width482
height854
total_frames241
frames_per_sampler81
seed1
cfg1.0
reference_image_strength1.00
pose_strength1.00
pose_start_percent0.00
pose_end_percent1.00
color_matchfalse
color_match_strength1.00
total_frames_input

Wan Animate 2 is a motion-transfer model: you give it a reference image of a character and a driving video of someone else's motion, and it animates your character through that motion. The catch is that Wan's video latent is built on a strict 4k+1 frame grid - 65, 81, 121 frames and so on - so long driving videos have to be chopped into chunks, sampled, stitched, and cropped to the length you actually wanted. Doing that by hand means a half-dozen nodes and a seam-matching headache. toobusy Wan Animate 2 Long Sampler folds the whole chunk-and-stitch loop into one node.

The mechanism is straightforward under the hood: the node plans valid Wan chunk lengths on the 4k+1 grid, rounds your frames_per_sampler to the grid, runs each chunk through the core WanAnimate2ToVideo node with a one-frame overlap for continuity, then trims the result to exactly total_frames. Each chunk gets seed + chunk index, so the noise stays deterministic per segment.

The inputs that matter

The node takes the final sockets, not the whole chain. Model loader, LoRA, attention, cache and conditioning are all built outside the node and connected as finished pieces:

  • model, positive, negative, sampler, sigmas, vae - your completed conditioning and sampling stack.
  • reference_image - the character you're animating.
  • pose_video - the driving motion, as an IMAGE batch.
  • total_frames - the exact output length. Wire a runtime-computed INT like VHS's loaded_frame_count here; that's the intended use, and total_frames_input is the optional linked override.
  • frames_per_sampler - frames per chunk. The README's starting points are 81 for 24GB, 49 for 16GB, 33 for 12GB. Start there and tune for your card.
  • reference_image_strength, pose_strength, plus pose_start_percent / pose_end_percent if you want the pose to kick in partway.
  • color_match - on by default, and you'll generally want it; chunk-to-chunk color drift is the #1 artifact in long animated clips.

Three outputs: images (the finished clip), frame_count, and chunk_count (useful for knowing how many samplers you actually burned).

What it needs

This is the node that demands you're on a recent ComfyUI. It relies on the core's experimental WanAnimate2ToVideo node with continuation outputs - the README explicitly calls this out. If you're on a stale install you'll hit a runtime error about missing continuation outputs, and the fix is updating ComfyUI, not this pack. You also need the Wan Animate 2 model files yourself; nothing is bundled.

Installing it

As with everything in the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/nicekriss/toobusy.git toobusy

or search "toobusy" in ComfyUI Manager, then restart. No extra Python dependencies for this node.

There's a continue_video input worth knowing about: feed it an existing Animate 2 result and the node treats it as the opening, counts it into total_frames, and anchors the first new chunk on its last frame - so you can extend a render you already liked instead of re-rolling the whole thing. Between that and color_match, the long-clip workflow this node replaces was genuinely fiddly. If you've ever stared at a 900-frame Animate 2 graph and reconsidered your life choices, this is the node toobly built for you.

Categorytoobusy/Make

Inputs (25)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
samplerSAMPLER
sigmasSIGMAS
vaeVAE
reference_imageIMAGE
pose_videoIMAGE
widthINT48264–8192
heightINT85464–8192
total_framesINT2411–100000Exact final output length. The last valid Wan chunk is cropped when necessary.
frames_per_samplerINT815–1024Frames rendered by each sampler chunk. Use 81 for 24 GB, 49 for 16 GB, or 33 for 12 GB as a starting point.
seedINT10–18446744073709550000Each following chunk uses seed + chunk index.
cfgFLOAT1.00–30
reference_image_strengthFLOAT1.000–10
pose_strengthFLOAT1.000–10
pose_start_percentFLOAT0.000–1
pose_end_percentFLOAT1.000–1
color_matchBOOLEANfalse
color_match_strengthFLOAT1.000–1
positive_poseoptCONDITIONINGFinal motion-branch conditioning. When omitted, positive is used.
clip_vision_outputoptCLIP_VISION_OUTPUT
clip_vision_output_poseoptCLIP_VISION_OUTPUT
continue_videooptIMAGEAn existing Animate 2 result to continue. It is included in total_frames and its last frame anchors the first new chunk.
total_frames_inputoptINTOptional linked override for total_frames.

Outputs (3)

NameTypeDescription
imagesIMAGE
frame_countINT
chunk_countINT