Nodes/AnimateDiff Evolved/Manual Append CameraCtrl Poses πŸŽ­πŸ…πŸ…“β‘‘
ComfyUI Node Runs on cloud

Manual Append CameraCtrl Poses πŸŽ­πŸ…πŸ…“β‘‘

Stitching camera moves together by hand

By KosinkadinkΒ·Created 3 years agoΒ·Updated 12 days agoΒ· 3,519
Manual Append CameraCtrl Poses πŸŽ­πŸ…πŸ…“β‘‘
  • poses_first
  • poses_last
  • CAMERACTRL_POSES

CameraCtrl gives you preset camera movements to load, but real shots are rarely one single motion for the whole clip - you want a pan that becomes a tilt, or two arcs joined into one sweep. Manual Append CameraCtrl Poses is the node for exactly that: it takes two loaded pose sequences and joins them into one continuous sequence, first pose then second.

Why you need this rather than just loading two poses

CameraCtrl poses aren't something you can casually author by hand - they're camera trajectory data (rotation and translation per frame), not a simple keyframe list. The pack ships a "Load camera pose" node for its presets, and community reports confirm the pose file format itself is barely documented: people have asked on the pack's own GitHub issues what the file format actually represents and gone over a year without an answer, which is why the community solution has been reverse-engineering it (decoding the plaintext files) or building external tooling - one user wrote a Blender add-on that exports camera moves directly into CameraCtrl's pose format. Given how opaque authoring your own poses from scratch is, appending two existing loaded poses together is the practical way to build a more complex camera path without needing to understand or hand-write the underlying format.

Inputs and output

  • poses_first (CAMERACTRL_POSES, required) - the sequence that plays first.
  • poses_last (CAMERACTRL_POSES, required) - the sequence appended after it.
  • Output: CAMERACTRL_POSES - the combined sequence, which you can feed straight into your CameraCtrl Apply node, or append again with another ADE_CameraManualPoseAppend node to build longer chains.

Both inputs need to already be loaded pose data - this node doesn't create poses, it only joins ones you already have. There's no length or timing configuration here; the combined result is simply the first sequence followed directly by the second, in the order you wire them.

Installing the pack and the CameraCtrl model

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. CameraCtrl itself needs CameraCtrl_pruned.safetensors (from Kosinkadink's HuggingFace) plus a v3 SD 1.5 motion module - per the README, CameraCtrl was specifically trained for v3_sd15_mm and doesn't support other motion module versions.

Common issues

The join between the two poses looks abrupt. Since this is a straight concatenation, not an interpolated blend, a hard cut between two very different camera movements (say, a fast pan directly into a slow tilt) will read as a jump rather than a smooth transition. If you need the motion itself to blend rather than cut, that's a limitation of simple appending - there's no crossfade parameter on this node.

You want to build a custom trajectory, not combine presets. This node only appends existing pose data; it doesn't let you draw or specify a new camera path. If the built-in presets genuinely don't cover what you need, community-built tooling (like Blender export scripts) is currently the more realistic route than hand-authoring pose files, given how sparse the official documentation is.

Wrong output type errors downstream. Both inputs and the output are the same CAMERACTRL_POSES type - make sure whatever's feeding poses_first/poses_last is actually a pose loader output and not, say, a plain MULTIVAL or keyframe object from elsewhere in the graph.

KB gap: the CameraCtrl pose file format itself - what the raw values represent - isn't documented anywhere in our sources beyond the community's own reverse-engineering. Worth capturing directly from the pack's documentation/ folder or the CameraCtrl upstream repo if this comes up again.

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

Inputs (2)

NameTypeDefaultDescription
poses_firstCAMERACTRL_POSESβ€”
poses_lastCAMERACTRL_POSESβ€”

Outputs (1)

NameTypeDescription
CAMERACTRL_POSESCAMERACTRL_POSESβ€”