Kling 3.0 Motion Control Standard (BudgetPixel)
Hand your character a performance to copy
- image
- video
- video
Motion control is the node genre that made Kling famous: take a still character, take a video of someone performing, and transfer the motion onto the character. This is Kling 3.0's standard-tier implementation - the "act this out for my character" workflow, at 130 credits per second of the reference video. Same family as the pack's DreamActor M2.0 node, different engine, and the differences matter: Kling's motion control has a prompt input for steering, a character_orientation control, and a keep_original_sound toggle that DreamActor doesn't offer.
The billing deserves a second read: it's per second of the reference video, not the output. A 10-second performance is a 10-second bill, full stop. So the cost of your scene is decided when you pick the reference clip, which is a weirdly good budgeting tool - you can't accidentally make it more expensive by extending the output.
How it works
Standard BudgetPixel motion-control flow: your character IMAGE and reference VIDEO are uploaded (video always goes through POST /v1/uploads), a job is created, the node polls until succeeded, and the result downloads as a VIDEO. The reference video drives the movement; the character image stays the character. The character_orientation parameter - with the tooltip's note that references are capped at 10 seconds when set to "image" - is the one real constraint to plan around, since the reference is otherwise accepted at 3–30 seconds.
The inputs that matter
- image - required. The character to animate (jpg/png/webp).
- video - required. The motion reference, mp4/webm, 3–30 seconds (max 10 when
character_orientationis "image"), up to 30 MB. - prompt - optional. Describe the motion/emotion to reinforce what the reference shows - handy when the reference's intent is ambiguous.
- character_orientation - the character's orientation relative to the reference; watch the 10-second cap when it's set to "image."
- keep_original_sound - whether the reference's audio carries over into the output.
Output is a single VIDEO.
Install
Manager (search "BudgetPixel") or:
cd ComfyUI/custom_nodes
git clone https://github.com/budgetpixel-ai/comfyui-budgetpixel.git
pip install -r comfyui-budgetpixel/requirements.txt
Restart, set BUDGETPIXEL_API_KEY or budgetpixel.json ({"api_key": "bpx_live_..."}) in the pack folder. No local model; requests is the only dependency.
Where people get burned
The reference-video constraints are the failure surface. Push past 30 MB or the duration caps and the API rejects the input - keep references tight and under the limits. The per-second billing means a long, elaborate reference is a long, expensive bill regardless of what you output, so prefer the shortest reference that captures the motion you want. And choose between this and DreamActor deliberately: Kling's motion control gives you the prompt, orientation, and sound controls, while DreamActor is the one known for driving faces and lip movements on real people. If your scene is "character talks to camera," that's DreamActor's lane; if it's "character walks through this choreography," this is Kling's.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Character image to animate. A public image URL, a data URI, raw base64, or an uploaded-file URL from POST /v1/uploads. jpg/png/webp. | |
| video | VIDEO | Motion reference video whose movement drives the character. A public video URL or an uploaded-file URL from POST /v1/uploads. mp4/webm, 3-30 seconds (max 10 seconds when character_orientation is "image"), up to 30 MB. | |
| character_orientationopt | COMBO | video | Take the character's orientation from the reference video or from the image. With "image", the reference video must be 10 seconds or less. |
| keep_original_soundopt | BOOLEAN | true | Keep the original audio from the reference video. |
| promptopt | STRING | Replace the characters in the video with the characters from the image, while strictly maintaining the characters' movements. | How the character should be animated. |
| force_rerunopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |