AnimateDiff+CameraCtrl Keyframe ππ π
Scheduling camera-control strength across a clip
- prev_ad_keyframes
- scale_multival
- effect_multival
- cameractrl_multival
- AD_KEYFRAMES
CameraCtrl support in AnimateDiff-Evolved is a genuinely niche corner of a pack that's already niche by 2026 standards - but if you're trying to drive actual camera moves (pans, tilts, arcs) instead of leaving motion to chance, this keyframe node is one of the pieces that makes it schedulable rather than fixed for the whole clip.
What CameraCtrl is, briefly
CameraCtrl (hehao13's model) is a separate small model that conditions AnimateDiff's motion module on an explicit camera trajectory rather than letting motion emerge from the prompt alone. The README is specific about its requirements: it needs the pruned checkpoint (CameraCtrl_pruned.safetensors, hosted on Kosinkadink's own HuggingFace), it only works with SD 1.5 AnimateDiff motion models, it was specifically trained for the v3 motion model, and it's Gen2-only, exposed under a dedicated Gen2/CameraCtrl submenu.
What this specific node does
Regular AD Keyframes let you schedule how much a motion model's scale/effect changes at different points during sampling. This node is the CameraCtrl-aware version of that: alongside the usual scale/effect scheduling, it adds a cameractrl_multival slot, so you can control how strongly the camera-control conditioning applies at a given point in the clip - full strength through the middle of a shot but eased in and out at the edges, for instance, rather than one fixed value applied uniformly.
Inputs and output
start_percent(float, default 0, required) - where in the sampling process this keyframe becomes active.prev_ad_keyframes(optional,AD_KEYFRAMES) - chain this onto previous keyframes to build a schedule of changes over time, rather than one static setting for the whole clip.scale_multival,effect_multival(optional,MULTIVAL) - the standard AnimateDiff motion-strength controls, schedulable here the same way they are elsewhere.cameractrl_multival(optional,MULTIVAL) - strength of the camera-control conditioning specifically, at this keyframe.inherit_missing(bool, default true) - when a value isn't set at this keyframe, inherit it from the previous one instead of resetting to a default. Leave this on unless you specifically want each keyframe to be fully self-contained.guarantee_steps(int, default 1) - the minimum steps this keyframe holds before a later one can take over.- Output:
AD_KEYFRAMES- feed into your Gen2 CameraCtrl Apply node, or chain further keyframes onto it.
Installing the pack and models
ComfyUI Manager: search AnimateDiff Evolved, confirm the author is Kosinkadink, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved
restart. You need a v3 SD 1.5 motion module (v3_sd15_mm) plus CameraCtrl_pruned.safetensors downloaded separately - the README is explicit that other motion module versions aren't what this was trained for.
Common issues
Camera pose files are genuinely under-documented. This is a real, community-confirmed pain point, not a guess: people have asked on the pack's own GitHub issues about the pose-file format with no response for over a year, and the community workaround is combining a handful of preset movements or writing custom tooling (one user built a Blender-to-CameraCtrl-pose export script) rather than relying on official documentation. If you're trying to build a custom camera path and the presets feel limited, you're not missing something obvious - that's the actual state of the tooling.
Camera motion looks right but image quality suffers. Remember the model constraints: wrong motion module version (not v3) or wrong beta_schedule for CameraCtrl are the most likely causes if results look off, per the README's own notes.
Nothing happens at all. Confirm AD_KEYFRAMES is actually reaching a Gen2 CameraCtrl Apply node, and that you're on the Gen2 node family generally - CameraCtrl has no path through the older, non-Gen2 nodes.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| start_percent | FLOAT | 0.0000β1 | β |
| prev_ad_keyframesopt | AD_KEYFRAMES | β | |
| scale_multivalopt | MULTIVAL | β | |
| effect_multivalopt | MULTIVAL | β | |
| cameractrl_multivalopt | MULTIVAL | β | |
| inherit_missingopt | BOOLEAN | true | β |
| guarantee_stepsopt | INT | 10β9007199254740991 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AD_KEYFRAMES | AD_KEYFRAMES | β |