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

Apply AnimateDiff+CameraCtrl Model πŸŽ­πŸ…πŸ…“β‘‘

Giving AnimateDiff an actual camera move

By KosinkadinkΒ·Created 3 years agoΒ·Updated 8 days agoΒ· 3,519
Apply AnimateDiff+CameraCtrl Model πŸŽ­πŸ…πŸ…“β‘‘
  • motion_model
  • cameractrl_poses
  • motion_lora
  • scale_multival
  • effect_multival
  • cameractrl_multival
  • ad_keyframes
  • prev_m_models
  • per_block
  • M_MODELS
β—„start_percent0.000β–Ί
β—„end_percent1.000β–Ί

Displayed as Apply AnimateDiff+CameraCtrl Model, this is the Apply step for CameraCtrl - a research technique that gives AnimateDiff an actual, controllable camera trajectory (pan, tilt, zoom, roll) rather than the loose, undirected motion you get from a plain motion module. It's the CameraCtrl-specific sibling of ADE_ApplyAnimateDiffModel, and it's the node that actually combines a loaded motion model with a set of camera poses into something Use Evolved Sampling can run.

Know the setup cost before you reach for this: per the README, CameraCtrl requires the specific pruned model CameraCtrl_pruned.safetensors (from huggingface.co/Kosinkadink/CameraCtrl), an AnimateDiff SD1.5 motion model specifically trained for v3 (v3_sd15_mm - v1 and v2 modules weren't trained for this), and it's Gen2-only - the Gen1 all-in-one loaders can't do CameraCtrl at all. This isn't a checkbox feature; it's the most demanding setup in the whole pack, which is probably why it's one of the least-searched nodes in this batch.

How it works

You feed it a loaded motion model and a cameractrl_poses object (built by ADE_LoadCameraPosesFromPath or ADE_CameraPoseCombo), and it produces an M_MODELS bundle that carries both the motion module and the camera trajectory into sampling together. The motion model still generates temporally coherent frames the way it normally would; CameraCtrl's contribution is steering where the "camera" appears to move across that sequence.

The inputs and outputs that matter

Required: motion_model (type MOTION_MODEL_ADE, must be the v3 SD1.5 module), cameractrl_poses (type CAMERACTRL_POSES, from a pose-loading node), and the familiar start_percent/end_percent pair (defaults 0/1) for scheduling when this applies during sampling.

Optional, and mostly shared with the other Apply nodes in the pack: motion_lora, scale_multival/effect_multival for the motion model's own strength, cameractrl_multival - the strength control specific to the camera effect, separate from the motion strength - ad_keyframes for finer time-based scheduling, prev_m_models to stack this on top of another motion model, and per_block. Output is M_MODELS, wired 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

Then, specific to this node: download CameraCtrl_pruned.safetensors from the README's linked HuggingFace repo, and make sure your motion model is v3_sd15_mm rather than any earlier version.

Common issues & troubleshooting

Wired everything up and the camera doesn't move, or looks nothing like your poses. Check the fundamentals in order: are you on a full Gen2 graph, is the motion model actually v3_sd15_mm, and is the CameraCtrl checkpoint the pruned version the README links rather than a different CameraCtrl file you found elsewhere. Any mismatch here tends to fail quietly rather than throw an error.

Motion looks right but the camera effect is barely there, or overwhelming. That's cameractrl_multival - it's a separate strength dial from scale_multival/effect_multival, which only govern the underlying motion module. Adjust the camera-specific one independently.

Wondering if this is worth the setup. Worth being honest here: CameraCtrl is a real, working feature, but it's a niche one even inside an already-niche pack - the community rarely discusses it, and Wan-based tooling has since given camera control to newer video models without the v3-SD1.5-only restriction. If you're not already committed to an SD 1.5 AnimateDiff pipeline for other reasons, it's worth checking whether a modern video model's camera control gets you there faster.

CategoryAnimate Diff πŸŽ­πŸ…πŸ…“/β‘‘ Gen2 nodes β‘‘/CameraCtrl

Inputs (11)

NameTypeDefaultDescription
motion_modelMOTION_MODEL_ADEβ€”
cameractrl_posesCAMERACTRL_POSESβ€”
start_percentFLOAT0.0000–1β€”
end_percentFLOAT1.0000–1β€”
motion_loraoptMOTION_LORAβ€”
scale_multivaloptMULTIVALβ€”
effect_multivaloptMULTIVALβ€”
cameractrl_multivaloptMULTIVALβ€”
ad_keyframesoptAD_KEYFRAMESβ€”
prev_m_modelsoptM_MODELSβ€”
per_blockoptPER_BLOCKβ€”

Outputs (1)

NameTypeDescription
M_MODELSM_MODELSβ€”