Seamless Loop Assembler
The glue that closes the loop — stitch your interpolated seam back in
- head_chunk
- vfi_interpolated
- tail_chunk
- looped_images
SeamlessLoopAssembler is the shortest node in this pack and it knows it. It takes the three pieces of the seamless-loop recipe - two chunks of original footage and an interpolated bridge - and glues them back into one continuous image sequence. That's the entire job.
You reach for it as the second half of the loop pipeline: SeamlessLoopSplitter cuts a clip into head_chunk, tail_chunk, and a [last, first] pair; a VFI (frame interpolation) node of your choosing turns that pair into smooth transition frames; then this node does the reassembly. It's the boring end of the job, and being boring is the point - you could chain ComfyUI core's 2-input ImageBatch nodes twice to combine three sequences, but that's exactly the kind of noodle-wiring this pack exists to delete.
How it works
It's a single torch.cat on the batch dimension, in the fixed order head_chunk → vfi_interpolated → tail_chunk. Three inputs in, one sequence out. No resizing, no frame-count checks, no opinion about whether the result is actually a loop - that part is between you and the player.
Inputs and output
- head_chunk - the frames after the split point from the splitter.
- vfi_interpolated - the interpolated bridge from your VFI node (the output of interpolating
vfi_batch). - tail_chunk - the frames before the split point.
- looped_images - everything concatenated, in that order.
Wire it like this:
SeamlessLoopSplitter.vfi_batch ──> [your VFI node] ──> SeamlessLoopAssembler.vfi_interpolated
SeamlessLoopSplitter.head_chunk ─────────────────────> SeamlessLoopAssembler.head_chunk
SeamlessLoopSplitter.tail_chunk ─────────────────────> SeamlessLoopAssembler.tail_chunk
Install
Same as its sibling in ComfyUI-AtlasUtils - ComfyUI Manager search for ComfyUI-AtlasUtils, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Yoon999/ComfyUI-AtlasUtils
Then restart ComfyUI. No models, no extra dependencies; the interpolation node is yours to supply.
Where people get burned
- It concatenates blindly. Order matters - swap head and tail and the loop has a jump cut in the wrong spot. Feed a VFI bridge with a different frame count and the timing shifts but nothing complains. Check the three inputs before you run.
- The seam is invisible to this node. It doesn't loop anything; it returns a plain image sequence whose last frame no longer matches its first in any special way. Play it back cyclically (or export to a looping GIF/MP4) for the actual loop.
- "It's not seamless!" - the seam quality is entirely whatever your VFI node produced. This node can't fix a bad interpolation, only reassemble one.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| head_chunk | IMAGE | — | |
| vfi_interpolated | IMAGE | — | |
| tail_chunk | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| looped_images | IMAGE | — |