Load AnimateDiff Model ππ π β‘
Just loading the motion module, nothing else yet
- ad_settings
- MOTION_MODEL
If the Gen1 loader is the one-box "just make it work" node, this is its Gen2 counterpart split into pieces - and this node is only the first piece. All it does is read a motion module file off disk and hand you back an object representing it. It doesn't touch your checkpoint, doesn't apply anything, doesn't need a model input at all. You wire its output into Apply AnimateDiff Model (either the Simple or Adv. version) to actually do something with it.
Why bother with the split? Because Gen2's whole point is composability. Once a motion model is just a value sitting on the graph, you can apply it with different start/end percentages, stack two motion models on top of each other via chaining, or feed the same loaded module into multiple downstream apply nodes without reloading it. The Gen1 all-in-one node can't do any of that - load and apply are welded together there.
How it works
This is a straight file loader for the .ckpt/.safetensors motion module - the temporal attention weights trained on WebVid-10M that AnimateDiff injects into a frozen SD 1.5 UNet. Nothing about the injection happens here; that's the Apply node's job. Think of this the same way you think of a checkpoint loader: it reads bytes into memory and hands you a typed object to pass along.
The inputs and outputs that matter
Just one required input: model_name, a dropdown of whatever motion module files ComfyUI found in your models folders. There's an optional ad_settings input if you're feeding in a tweak bundle from the AnimateDiff Settings node (weight adjustments, position-encoding adjustments) - most people leave this unplugged and only reach for it once they're deep into fine-tuning motion behavior.
The output is MOTION_MODEL (type MOTION_MODEL_ADE), which only one kind of node accepts: an Apply node - ADE_ApplyAnimateDiffModelSimple, ADE_ApplyAnimateDiffModel (the Adv. version), ADE_ApplyAnimateLCMI2VModel, or ADE_InjectI2VIntoAnimateDiffModel. If you see MOTION_MODEL_ADE type-mismatch errors, you plugged this into something expecting a plain MODEL - that's a Gen1/Gen2 mixup.
How to install it
Same pack, same steps as every other node here: search AnimateDiff Evolved by Kosinkadink in ComfyUI Manager, or
cd ComfyUI/custom_nodes && git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved
then restart. You need at least one motion module downloaded separately - the README links HuggingFace, Google Drive, and CivitAI sources for mm_sd_v14, mm_sd_v15, mm_sd_v15_v2, and v3_sd15_mm, plus community finetunes. Drop the file into ComfyUI/models/animatediff_models or ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models; either location shows up in the dropdown.
Common issues & troubleshooting
model_name dropdown is empty. The file is either in the wrong folder or ComfyUI hasn't rescanned since you added it - restart the server rather than just refreshing the browser.
"Works" but nothing visibly changes your output. This node alone doesn't do anything to your generation - it's inert until an Apply node consumes its MOTION_MODEL output and that in turn feeds Use Evolved Sampling. If your video looks static, check the whole chain is wired through, not just this one node.
Picked the wrong module for your checkpoint. The output type doesn't encode architecture - nothing stops you loading an SDXL-family motion module and applying it to an SD 1.5 checkpoint (or vice versa) except broken output. Match module family to base checkpoint; this is the single most common beginner mistake with AnimateDiff generally, not specific to this node.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 0 options: | |
| ad_settingsopt | AD_SETTINGS | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MOTION_MODEL | MOTION_MODEL_ADE | β |