ComfyUI Node

CameraJoinFromChaoJie

Splice two camera trajectories end to end, not on top of each other

By aigc-apps·Created 2 years ago·Updated about a year ago· 2,270
CameraJoinFromChaoJie
  • camera_pose1
  • camera_pose2
  • CameraPose

CameraJoinFromChaoJie is the odd one out among the pack's four camera nodes: instead of picking moves from dropdowns, it takes two already-built CameraPose objects and concatenates them. One trajectory, then the next, in sequence. Think of it as the "then" node - pan up, then push in - where CameraCombineFromChaoJie is the "and" node.

It's another vendored copy from chaojie/ComfyUI-CameraCtrl-Wrapper, which the EasyAnimate pack ships because installing that wrapper would pin a diffusers version that breaks EasyAnimate. You get the functionality without the dependency fight.

The inputs

Only two, and both are CameraPose type - meaning you can't fill them in by hand, they must be wired from upstream nodes:

  • camera_pose1 - the first move. Typically the output of CameraBasicFromChaoJie or CameraCombineFromChaoJie.
  • camera_pose2 - the second move, same sources.

Because both inputs are already full trajectories (each carrying its own length from its own video_length setting), this node doesn't have speed or video_length of its own. It just stitches the two pose sequences together with combine_camera_motion. The output is a single, longer CameraPose.

Where it goes

CameraBasicFromChaoJie ─┐
                         ├─ CameraJoinFromChaoJie → CameraTrajectoryFromChaoJie → EasyAnimateV5_V2VSampler (camera_conditions)
CameraBasicFromChaoJie ─┘

Each basic node can carry its own video_length, and joining respects them - so you can make a 16-frame pan followed by a 16-frame zoom, and the joined trajectory will be 32 frames. Match the total against the sampler's video_length or the camera move will run out (or overrun) mid-video.

Notes

This is the node that makes more complex camera choreography possible - a push-in into a pan, a reveal then a rotation - but it's also the one where off-by-one frame math bites. Total frames from the join must line up with what the sampler generates; if your "then" feels like a hard cut or a skip, the lengths are off. And since it needs two valid CameraPose inputs, it's a natural next step once you've got the basic node working rather than a starting point.

CategoryCameraCtrl

Inputs (2)

NameTypeDefaultDescription
camera_pose1CameraPose
camera_pose2CameraPose

Outputs (1)

NameTypeDescription
CameraPoseCameraPose