LatentWalkVae
Two images in, a smooth morph out
- start
- end
- vae
- latents
- images
The name says it all and the workflow is the shortest in the pack: encode two images, walk between their latents, decode. LatentWalkVae is a pure morph machine - no diffusion model involved at all. If you've ever wanted a video of a cat smoothly turning into a dog, or a looping animation that pans between two photographs, this is the node that gets you there in about four nodes total.
The mechanism, plainly
Every image in ComfyUI gets compressed into a latent - a compact representation the VAE encodes and decodes. That's not a metaphor: two images of the same dimensions live at nearby points in the same latent space, and walking a straight (or curved) line between those two points and decoding the in-betweens gives you a morph. LatentWalkVae does exactly that: it takes your start and end LATENT inputs, computes steps cut points along your chosen travel path, blends the two latent vectors at each cut point, and stacks the results into one batch.
Two outputs come out. latents is the full batch of interpolated latents - feed that to a sampler if you want to do something fancier than a straight decode. images is the batch already VAE-decoded, if you plugged a VAE into the optional vae input. That optional input is doing real work: skip it and images comes back as None, because the node has nothing to decode with. Wiring a VAE is the difference between "got a batch of latents" and "got your finished animation frames."
The inputs that actually matter
steps (default 9) is the one you'll touch constantly - it's your frame count. The travel mode shapes the pacing: linear is even, the power modes (quadratic → quartic) linger at one end, circle swings through latent space, and norm clusters frames around the middle. factor only does anything for hinge (where the bend happens) and norm (the spread of the Gaussian). blend picks how each frame is computed - lerp and slerp are the ones you want for sane morphs; slerp follows the curve of latent space instead of cutting across it, which tends to look more organic. The other dozen modes (multiply, screen, overlay, difference, random…) are image-blend operations applied to vectors, and they range from interesting to horror-movie, which is a feature.
Flip reflect on and the walk becomes start→end→start - a ping-pong that's the easiest way to get a seamlessly looping GIF. That's the trick the README's demo animations lean on, and it's genuinely the nicest feature for loop art.
Gotchas
Beyond the "forgot the VAE, got None" trap: start and end latents must be the same shape, and the node will raise a clear Start and end latents must have the same shape error if they're not - so encode both images at the same resolution. And because this is pure VAE-space interpolation with no sampling, a morph between two very different compositions can pass through mush in the middle; that's physics, not a bug. Lower steps, pick slerp, or lean on reflect for loops and it's usually fine.
Installing it
It's the flagship node of the Latent Walk pack (rnbwdsh/ComfyUI-LatentWalk), a fork of Nicholas McCarthy's TravelSuite. In ComfyUI Manager, search "Latent Walk", or:
cd ComfyUI/custom_nodes
git clone https://github.com/rnbwdsh/ComfyUI-LatentWalk
Restart ComfyUI. Dependencies are torch, numpy, Pillow and scipy (scipy is what powers the norm travel mode), all installed from the pack's requirements.txt - no model files to download. The README's examples run on a flux.1-schnell GGUF, so the morph trick works on modern models, not just SD1.5. Of everything in the pack, this is the one to try first: it's the least wiring, the most predictable output, and the fastest way to feel like you made a video.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| start | LATENT | — | |
| end | LATENT | — | |
| steps | INT | 93–10000 | — |
| factor | FLOAT | 0.50 | — |
| blend | COMBO | 14 options: add, multiply, divide, subtract, screen, difference, +8 | |
| travel | COMBO | 8 options: linear, circle, quadratic, cubic, quartic, geometric, +2 | |
| reflect | BOOLEAN | false | — |
| vaeopt | VAE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| latents | LATENT | — |
| images | IMAGE | — |