Motionctrl Sample
Everything in one node, and it shows
- IMAGE
If Motionctrl Sample Simple is the composed, professional version, this is the "just give me a video" button. Motionctrl Sample bundles the entire pipeline - model loading, conditioning, sampling, VAE decode - into a single node with a prompt, a camera string, a trajectory string, and a seed on the front. Drop one in, paste a prompt, hit queue, and you get a clip. It's the fastest possible way to find out whether this pack is worth your time, and I'd argue it's the right first node to try.
But "everything in one node" has a price, and you should know it before you build a whole workflow around it.
How it works
It does exactly what the loader + Cond + Simple sampler do together, internally: it loads motionctrl.pth from your checkpoints, sets the frame length, encodes your prompt, converts the camera string to pose matrices and the trajectory to flow features, runs DDIM at CFG 7.5, decodes the latents, and hands you an IMAGE tensor of the whole clip. Same machinery, no exposed seams.
The inputs that matter
The required ones are: prompt, camera, traj, frame_length (default 16), steps (default 50), and seed (default 1234). Paste a camera or trajectory string from the preset nodes and you're basically done - that's the whole appeal.
The optional ones:
- ckpt_name - defaults to
motionctrl.pth; only touch it if you keep multiple MotionCtrl weights. - traj_tool - again just a link to the trajectory drawing tool, not a setting.
- draw_traj_dot / draw_camera_dot - the same debug overlays as the Simple sampler.
Why you'd reach for Simple instead
Three real limitations, all baked into how this node is built:
- It reloads the model every single run. Every queue click is a full checkpoint load before sampling starts. Iterating on a prompt becomes a waiting game.
Motionctrl Sample Simpleloads once and lets you iterate cheaply. - It's always "control both" mode. The code hardcodes camera and trajectory conditioning. If you want to isolate camera-only or trajectory-only to debug what's breaking, you can't here - that's
Motionctrl Cond'sinfer_modejob. - No
context_overlap. The Simple path can chain runs past the model's native frame count with a sliding window; this node can't. 16 frames (about 1.6 seconds) is your ceiling.
So the honest workflow advice: use this node once to confirm the pack works on your machine, then rebuild the same graph as Loader → Cond → Sample Simple before you actually try to make something. The bundled base workflow does exactly that, and it's the file you want to start from rather than hand-wiring it.
Common issues
The same "checkpoint not found" failure as the loader - the file must be named and placed in models/checkpoints. Malformed camera/traj JSON will error at parse time rather than giving you a video, so when in doubt, feed it the preset nodes' output rather than hand-typed JSON. And keep in mind that because every run reloads the model, the first generation after any change will feel disproportionately slow - that's structural, not a hang.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | a rose swaying in the wind | — |
| camera | STRING | [[1,0,0,0,0,1,0,0,0,0,1,0.2]] | — |
| traj | STRING | [[117, 102]] | — |
| frame_length | INT | 16 | — |
| steps | INT | 50 | — |
| seed | INT | 1234 | — |
| traj_toolopt | STRING | https://chaojie.github.io/ComfyUI-MotionCtrl/tools/draw.html | — |
| draw_traj_dotopt | BOOLEAN | false | — |
| draw_camera_dotopt | BOOLEAN | false | — |
| ckpt_nameopt | COMBO | motionctrl.pth | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |