Nodes/ComfyUI-DynamiCrafterWrapper/ToonCrafter Interpolation
ComfyUI Node

ToonCrafter Interpolation

Draw two frames, get the inbetweens

By kijai·Created 2 years ago·Updated about a year ago· 680
ToonCrafter Interpolation
  • model
  • clip_vision
  • positive
  • negative
  • images
  • optional_latents
  • controlnet
  • samples
steps20
cfg7.00
eta1.00
frames16
seed0
fs10
vae_dtypeauto
image_embed_ratio1.00
augmentation_level0.0000
ddpm_from1000

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_unet on 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 DynamiCrafterI2V is for.
CategoryDynamiCrafterWrapper

Inputs (17)

NameTypeDefaultDescription
modelDCMODEL
clip_visionCLIP_VISION
positiveCONDITIONING
negativeCONDITIONING
imagesIMAGE
stepsINT201–200
cfgFLOAT7.000–200
etaFLOAT1.000–1
framesINT161–100
seedINT00–18446744073709550000
fsINT102–100
vae_dtypeCOMBOauto4 options: fp32, fp16, bf16, auto
image_embed_ratiooptFLOAT1.000–1
augmentation_leveloptFLOAT0.00000–10
optional_latentsoptLATENT
ddpm_fromoptINT10001–1000
controlnetoptDC_CONTROL

Outputs (1)

NameTypeDescription
samplesLATENT