ToonCrafter Interpolation
Draw two frames, get the inbetweens
- model
- clip_vision
- positive
- negative
- images
- optional_latents
- controlnet
- samples
This is the node people actually came to this pack for. Give it two cartoon frames - a start drawing and an end drawing - and it generates the animation between them. Not a crossfade, not a morph: it hallucinates the actual inbetween frames the way a human inbetweener would. When ToonCrafter dropped in May 2024 the announcement thread hit +1600 and the top comment was "this could make indie anime production accessible to everyone." That's the promise, and on a good roll it delivers something genuinely striking that no other model does.
It's part of kijai's ComfyUI-DynamiCrafterWrapper, the port of the CUHK / Tencent AI Lab ToonCrafter model (a cartoon-tuned sibling of DynamiCrafter).
How it works
You feed in a batch of images - the keyframes, usually two - plus a loaded ToonCrafter DCMODEL, a CLIP Vision embedding, and positive/negative conditioning. The model samples a latent video that starts at your first frame and lands on your last, filling the gap with generated motion that respects both endpoints. The key thing to internalize: this node outputs a latent, not images. It emits samples, and you decode them with the dedicated ToonCrafterDecode node - not a standard VAE Decode, because ToonCrafter uses a special dual-reference decoder that blends both keyframes' detail to keep lines consistent. Skip that step and you don't get ToonCrafter, you get a blurry mess.
The inputs and outputs that matter
Wiring: model (a tooncrafter_* checkpoint), clip_vision, positive/negative, and images (your keyframe batch). The dials worth knowing:
- frames - how many frames total, including endpoints (default 16). This is your inbetween density.
- fs - the motion/frame-stride conditioning (default 10). Lower for subtle motion, higher for more dynamic movement between the drawings.
- steps / cfg - sampling quality and prompt adherence; defaults 20 / 7. ToonCrafter's default step count is lower than plain DynamiCrafter's.
- eta - the DDIM stochasticity (default 1). Leave it unless you're chasing determinism.
Optional inputs to know: controlnet takes a DC_CONTROL (from DynamiCrafterControlnetApply) so you can steer the inbetweening with sketch guidance; augmentation_level loosens adherence to the input frames for more motion; optional_latents and ddpm_from are advanced levers for injecting your own starting latent and controlling how far into the diffusion schedule it begins.
The single output is samples (LATENT) → straight into ToonCrafterDecode.
Installing it
Bundled with the pack. ComfyUI Manager → search ComfyUI-DynamiCrafterWrapper, or cd ComfyUI/custom_nodes && git clone https://github.com/kijai/ComfyUI-DynamiCrafterWrapper, then pip install -r requirements.txt, restart. Install xformers (pip install xformers --no-deps) - this matters more here than anywhere else in the pack, because the decode step needs it for full quality. Grab a tooncrafter_512_interp checkpoint via DownloadAndLoadDynamiCrafterModel, plus the SD 2.1 CLIP encoder and a CLIP Vision model.
Common issues
- Output is latents, not video. Working as intended - you must chain
ToonCrafterDecode. This trips up nearly everyone the first time. - Hit-or-miss results. Be honest with yourself: the showreels are cherry-picked. As one early tester put it, some renders are "1 of 10k." Re-roll the seed, keep your two keyframes stylistically close, and don't expect every run to be clean. This is the real cost of the technique.
- VRAM. 512x320 wants roughly 15GB for sampling and peaks around 17GB at decode. Drop resolution to cut it hard, enable
fp8_uneton the loader, and make sure xformers is live. - Not for photoreal. It's tuned for cartoon/anime line art. Feed it photographs and you're using the wrong model - that's what
DynamiCrafterI2Vis for.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| model | DCMODEL | — | |
| clip_vision | CLIP_VISION | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| images | IMAGE | — | |
| steps | INT | 201–200 | — |
| cfg | FLOAT | 7.000–200 | — |
| eta | FLOAT | 1.000–1 | — |
| frames | INT | 161–100 | — |
| seed | INT | 00–18446744073709550000 | — |
| fs | INT | 102–100 | — |
| vae_dtype | COMBO | auto | 4 options: fp32, fp16, bf16, auto |
| image_embed_ratioopt | FLOAT | 1.000–1 | — |
| augmentation_levelopt | FLOAT | 0.00000–10 | — |
| optional_latentsopt | LATENT | — | |
| ddpm_fromopt | INT | 10001–1000 | — |
| controlnetopt | DC_CONTROL | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| samples | LATENT | — |