Nodes/AnimateDiff Evolved/Apply AnimateLCM-I2V Model πŸŽ­πŸ…πŸ…“β‘‘
ComfyUI Node Runs on cloud

Apply AnimateLCM-I2V Model πŸŽ­πŸ…πŸ…“β‘‘

Turning a still image into your video's first frame

By KosinkadinkΒ·Created 3 years agoΒ·Updated 8 days agoΒ· 3,519
Apply AnimateLCM-I2V Model πŸŽ­πŸ…πŸ…“β‘‘
  • motion_model
  • ref_latent
  • motion_lora
  • scale_multival
  • effect_multival
  • ad_keyframes
  • prev_m_models
  • per_block
  • M_MODELS
β—„ref_drift0.000β–Ί
β—„apply_ref_when_disabledfalseβ–Ί
β—„start_percent0.000β–Ί
β—„end_percent1.000β–Ί

This is the Apply step for AnimateLCM-I2V specifically - image-to-video, where a reference image anchors what your generated motion looks like rather than starting from pure noise every frame. It plays the same role in the chain as ADE_ApplyAnimateDiffModel (Adv.) does for a regular motion model, but with the extra machinery I2V needs: a reference latent input and a ref_drift control that isn't present on the standard Apply nodes at all.

Credit where the README puts it: this implementation is built on work Fu-Yun Wang did during his AnimateLCM-I2V paper, ported into diffusers-to-ComfyUI form by Kosinkadink. Worth knowing if you go looking for the original research behind what this node is doing.

How it works

You give it an already-loaded I2V motion model plus a ref_latent - your reference image, VAE-encoded (the README specifically recommends the Scale Ref Image and VAE Encode node from this same pack to preprocess it correctly). The motion model uses that reference to anchor the generated sequence, rather than generating frames with no image anchor at all. ref_drift controls how much the generated frames are allowed to wander from that reference over the course of the clip.

The README's own field notes are worth repeating verbatim in spirit: although built as an img2video model, the author found it works best for vid2vid with ref_drift=0.0, using it for at least the first step or two before chaining into other motion models via additional Apply nodes. It's also called out as useful for holding coherence at higher resolutions - the author reports easily going from a 512Γ—512 source to 1024Γ—1024 in a single pass with ControlNet and SD LoRAs active.

The inputs and outputs that matter

Required: motion_model (type MOTION_MODEL_ADE, from ADE_LoadAnimateDiffModel or ADE_InjectI2VIntoAnimateDiffModel), ref_latent (your VAE-encoded reference image), ref_drift (default 0, the README's own recommended value for vid2vid work), apply_ref_when_disabled (boolean, default false - set true to keep the image encoder doing its thing even past end_percent), and start_percent/end_percent for scheduling when in the sampling process this model is active.

Optional: motion_lora, scale_multival, effect_multival, ad_keyframes, prev_m_models (chain in another motion model to combine with this one), and per_block. Output is M_MODELS, feeding into Use Evolved Sampling's m_models slot or another Apply node's prev_m_models.

How to install it

Standard for the pack - ComfyUI Manager, search AnimateDiff Evolved by Kosinkadink, or:

cd ComfyUI/custom_nodes && git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved

You need the AnimateLCM-I2V model itself (HuggingFace wangfuyun/AnimateLCM-I2V, linked in the README) plus the general AnimateLCM settings: autoselect/lcm/lcm[100_ots] beta schedule, an LCM LoRA, lcm sampler in your KSampler, low CFG (roughly 1.0–2.0), and few steps (minimum ~4).

Common issues & troubleshooting

Reference image isn't actually influencing the output. Make sure it went through Scale Ref Image and VAE Encode rather than a generic VAE Encode - the README specifically calls out that preprocessing node as the correct path, and a mismatched latent shape or scale here is a likely silent failure point.

Motion drifts far from the reference over the clip. That's ref_drift - raise it if you want the reference's influence to persist longer, though the author's own recommendation for vid2vid work specifically is 0.0.

Using this for pure image-to-video and results look off. The README is candid that despite the I2V name, the author found this works best for vid2vid rather than the img2video use case it was originally built for - if you're getting weak results on a straight I2V task, that's a documented known limitation, not necessarily your setup.

CategoryAnimate Diff πŸŽ­πŸ…πŸ…“/β‘‘ Gen2 nodes β‘‘/AnimateLCM-I2V

Inputs (12)

NameTypeDefaultDescription
motion_modelMOTION_MODEL_ADEβ€”
ref_latentLATENTβ€”
ref_driftFLOAT0.0000–10β€”
apply_ref_when_disabledBOOLEANfalseβ€”
start_percentFLOAT0.0000–1β€”
end_percentFLOAT1.0000–1β€”
motion_loraoptMOTION_LORAβ€”
scale_multivaloptMULTIVALβ€”
effect_multivaloptMULTIVALβ€”
ad_keyframesoptAD_KEYFRAMESβ€”
prev_m_modelsoptM_MODELSβ€”
per_blockoptPER_BLOCKβ€”

Outputs (1)

NameTypeDescription
M_MODELSM_MODELSβ€”