Nodes/VideoX-Fun/Camera Trajectory From ChaoJie
ComfyUI Node

Camera Trajectory From ChaoJie

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

By aigc-apps·Created 2 years ago·Updated 7 days ago· 2,283
Camera Trajectory From ChaoJie
  • 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—