CameraBasicFromChaoJie
One dropdown for a pan, dolly, or orbit in EasyAnimate
- CameraPose
If you've ever watched EasyAnimate's camera-control demos - the pan up, the orbit, the push-in - this is the node that generates them. CameraBasicFromChaoJie is the simplest way to tell EasyAnimate's -Control-Camera model "move the camera like this," with a single dropdown and two numbers.
The "ChaoJie" in the name is the giveaway about where it came from. This node (and its three siblings in the pack) is copied from chaojie/ComfyUI-CameraCtrl-Wrapper, the ComfyUI port of CameraCtrl. The EasyAnimate team vendored the code because that wrapper pins a specific diffusers version that clashes with what EasyAnimate needs - so you get the CameraCtrl node set without installing the wrapper or fighting the dependency. It lives under the CameraCtrl category in your node list.
The inputs
camera_pose- the dropdown. Nine choices:Static,Pan Up,Pan Down,Pan Left,Pan Right,Zoom In,Zoom Out,ACW, andCW(that's counterclockwise and clockwise rotation). Pick one.speed- a FLOAT, default 1.0. Scales how fast the motion happens over the clip. Lower = gentler, higher = more aggressive.video_length- an INT, default 16. How many frames the camera move spans. It defines the length of the resulting trajectory, which matters because it has to line up with the video you're generating.
The output
A single CameraPose output. That's not a human-friendly object - it's the raw camera motion trajectory (rotation and translation, computed via get_camera_motion under the hood). You won't look at it; you'll wire it somewhere. On its own it's inert. It becomes useful in the next step: either feed it to CameraTrajectoryFromChaoJie to turn it into the trajectory string the sampler wants, or combine it with other moves first.
Where it fits
The canonical path for camera-controlled generation in this pack:
CameraBasicFromChaoJie → CameraTrajectoryFromChaoJie → EasyAnimateV5_V2VSampler (camera_conditions)
with a -Control-Camera model loaded in LoadEasyAnimateModel. The trajectory node takes the CameraPose and renders it to the JSON string that the sampler's camera_conditions input actually consumes - this basic node is the "choose a move" step, not the "deliver" step.
Notes
The one thing people get wrong: video_length here must match the sampler's video_length, or the camera move and the generated video will be out of sync. And temper your expectations - camera control is directional, not cinematic. "Pan Up" moves the camera; it doesn't magically storyboard a shot. For a single named move though, this is the node you reach for: it's the least fiddly of the four camera nodes and the right place to start.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| camera_pose | COMBO | Static | 9 options: Static, Pan Up, Pan Down, Pan Left, Pan Right, Zoom In, +3 |
| speed | FLOAT | 1.00 | — |
| video_length | INT | 16 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CameraPose | CameraPose | — |