IAMCCS WAN Shotboard Loop Accumulator
Stitch your chunk renders into one long video, crossfade included
- chunk_images
- previous_images
- images
- frame_count
- report
You render a long shot as a sequence of chunks, and at some point someone has to glue the chunks together. Naive concatenation gives you a visible seam at every join. IAMCCS_WanShotboardLoopAccumulator ("IAMCCS WAN Shotboard Loop Accumulator") is the glue: it accumulates each chunk's IMAGE batch into a single growing images output across loop iterations, and it can crossfade the overlap between consecutive chunks so the seams don't announce themselves.
It's an image-space accumulator, which means it sits after VAE decode, not in latent space. Each pass you feed it the freshly decoded chunk_images, plus previous_images from its own prior output, and it returns the concatenated timeline plus frame_count and a report of exactly what it did.
The controls
loop_index- the loop counter. Lazy, so the node only re-runs when a new chunk actually arrives.trim_first_frames_after_first(default 1) - how many frames to drop from the head of each chunk after the first. Chunks usually overlap their predecessor's tail by design (that's how continuity sampling works), so you cut the duplicated frames before appending.overlap_mode- two choices here:linear_blend(default) orcut_trim(plain cut, no blending).overlap_blend_frames(default 5) - how many frames get crossfaded at the seam when blending. The blend fades from the previous chunk's tail into the new chunk's head over these frames.
The mechanism
In linear_blend mode, the last blend_frames of the previous timeline and the first blend_frames of the new chunk (after trimming) are combined with a linear ramp - old chunk fades out as new chunk fades in - then the rest of the new chunk is appended after the blend. That's the classic dissolve, and it's the right default for hiding the join. In cut_trim, no blending happens: it just trims the overlap and concatenates, which is faster and appropriate when your chunks were designed with exact seam alignment.
Outputs are images (the whole accumulated timeline so far), frame_count, and report (JSON with previous/chunk/trim/blend/contributed frame counts - genuinely useful for debugging a seam).
Install
Standard IAMCCS-nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
or ComfyUI Manager → search "IAMCCS" → restart. No models, no dependencies. ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8.
Where it fits and the honest limits
This is the final step of IAMCCS's PURE shotboard loop - the "give me one continuous video out of my chunked renders" node. Two caveats. First, if you're chaining segments that already converge on shared first/last frames (the FLF pipeline), you may not need blending at all - cut_trim plus a 1-frame trim is often seamless and cheaper. Second, this blends in pixel space, which is fine for hiding a cut but isn't a substitute for proper temporal continuity in the generation itself; a chunk that drifted in color will still show its drift, just softened. If you want fancier crossfades - gamma-corrected or Lab-space blending - the IAMCCS_WanShotboardLoopAccumulatorLinear sibling has you covered.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| chunk_images | IMAGE | — | |
| loop_index | INT | 00–100000 | — |
| trim_first_frames_after_first | INT | 10–512 | — |
| overlap_mode | COMBO | linear_blend | 2 options: linear_blend, cut_trim |
| overlap_blend_frames | INT | 50–512 | — |
| previous_imagesopt | IMAGE | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| frame_count | INT | — |
| report | STRING | — |