Nodes/Video Generation Nodes for EasyAnimate/CameraTrajectoryFromChaoJie
ComfyUI Node

CameraTrajectoryFromChaoJie

The node that turns a camera pose into the trajectory text EasyAnimate actually reads

By aigc-apps·Created 2 years ago·Updated about a year ago· 2,270
CameraTrajectoryFromChaoJie
  • camera_pose
  • camera_trajectory
  • video_length
fx0
fy1
cx0.50
cy0.50

Here's the thing about the pack's camera nodes: the sampler doesn't eat CameraPose objects. It eats a string. CameraTrajectoryFromChaoJie is the adapter that makes the two meet - it takes a CameraPose and serializes it into the JSON trajectory text that EasyAnimateV5_V2VSampler's camera_conditions input expects. Every camera workflow in this pack funnels through this node, so it's worth understanding even though you'll never touch its defaults.

It's the fourth of the nodes copied from chaojie/ComfyUI-CameraCtrl-Wrapper into the EasyAnimate pack (same reason as the others: the wrapper pins an incompatible diffusers version). Category CameraCtrl.

The inputs

  • camera_pose - a CameraPose, wired from CameraBasicFromChaoJie, CameraCombineFromChaoJie, or CameraJoinFromChaoJie. This is the actual move.
  • fx and fy - focal lengths, as fractions. Defaults 0.474812461 and 0.844111024.
  • cx and cy - principal point offsets, both default 0.5 (dead center).

Those four numbers are the intrinsic camera parameters the trajectory encoding needs. The defaults are chosen to work with EasyAnimate's expected format, and honestly, for 99% of what you'll do you leave them alone. They exist because camera trajectory formats embed intrinsics so the model knows the optics it's assuming.

What comes out

Two outputs:

  • camera_trajectory - a STRING. JSON, one list per frame, each entry carrying the intrinsics plus the rotation and translation. This is the wire-ready format for the sampler.
  • video_length - an INT. The number of frames in the trajectory, echoed out so you can check it matches your sampler setting.

The workflow

CameraBasicFromChaoJie → CameraTrajectoryFromChaoJie → EasyAnimateV5_V2VSampler (camera_conditions)

Load a -Control-Camera checkpoint in LoadEasyAnimateModel (with model_type set to Control), wire camera_trajectory into camera_conditions, and the V5 sampler builds the camera control video from the intrinsics and motion.

Notes

The video_length output exists to save you a mistake - if it doesn't equal the sampler's video_length, the camera move won't span the clip correctly. And a tiny taste of honesty about this whole camera stack: it's the most brittle corner of the EasyAnimate pack, popular around the V5.1 launch and essentially dormant since the community moved on to Wan and Hunyuan. It works, and it's fun, but don't be surprised if results read as "generic drifting camera" rather than "directed cinematography."

CategoryCameraCtrl

Inputs (5)

NameTypeDefaultDescription
camera_poseCameraPose
fxFLOAT00–1
fyFLOAT10–1
cxFLOAT0.500–1
cyFLOAT0.500–1

Outputs (2)

NameTypeDescription
camera_trajectorySTRING
video_lengthINT