Load Motionctrl Checkpoint
Where MotionCtrl's weights actually load
- model
- clip
- vae
- ddim_sampler
If you're getting "checkpoint not found" or a red node, this is the one to blame. Load Motionctrl Checkpoint is the entry point of the whole ComfyUI-MotionCtrl pack: it loads the MotionCtrl model into memory and hands you the four objects every real workflow needs. Nothing else in the pack can run until it does. Think of it as the CheckpointLoaderSimple of this pack, except the "checkpoint" is Tencent ARC's MotionCtrl - a late-2023 research model for controlling camera and object motion in generated video - running on the old LVDM/VideoCrafter stack, and it will absolutely eat your VRAM while it loads.
How it works
Under the hood it reads the pack's configs/inference/config_both.yaml, sets the model's temporal_length from the frame_length you give it, builds the UNet, then loads the weights from your ComfyUI/models/checkpoints folder. That frame_length value isn't cosmetic - it decides how many frames the model will generate, which at the pack's fixed 10 fps output means 16 frames is about 1.6 seconds of video. You can push it higher, but memory and coherence get dicey fast. This model is from the era before Wan and Hunyuan made 256×256 feel like a punchline; set expectations accordingly and use it for what it's good at - controllable motion, not cinematic resolution.
The inputs that matter
There are only two, and you'll mostly touch one:
- ckpt_name - a dropdown of whatever's in your
models/checkpointsfolder. Defaults tomotionctrl.pth, which is exactly what you want it to be. - frame_length - default 16. The number of frames the model generates.
The four outputs
- model (
MOTIONCTRL) - wire this into bothMotionctrl CondandMotionctrl Sample Simple - clip (
EMBEDDER), vae (VAE), ddim_sampler (SAMPLER) - all three go straight intoMotionctrl Sample Simple
The bundled base workflow is literally: loader → Cond → Sample Simple, with two preset nodes feeding camera and trajectory strings into Cond.
Installing it (the part that actually bites)
ComfyUI Manager is the easy route - search "ComfyUI-MotionCtrl" and hit install. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/chaojie/ComfyUI-MotionCtrl
cd ComfyUI-MotionCtrl
pip install -r requirements.txt
Then the step everyone forgets: download motionctrl.pth and drop it in ComfyUI/models/checkpoints, then restart ComfyUI.
Common issues
The most common failure is the checkpoint itself: the file has to be named motionctrl.pth (or whatever you select) and sit in models/checkpoints, not in the pack folder. The loader asserts the path exists and dies with a clear "checkpoint Not Found!" if it doesn't.
The second gotcha is dependency hell, and it's real here. This pack pins old, opinionated versions - pytorch-lightning==1.9.0, opencv-python==4.8.0.74, gradio==3.37.0 - into the same Python environment as the rest of your nodes. In a modern ComfyUI that can break other packs or break this one, depending on install order. If things import-fail after installing, that's your culprit, not the model.
And one honest warning: the loader calls .cuda() unconditionally. No GPU, no run - this pack is CUDA-only, no CPU fallback.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | COMBO | motionctrl.pth | 0 options: |
| frame_length | INT | 16 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MOTIONCTRL | — |
| clip | EMBEDDER | — |
| vae | VAE | — |
| ddim_sampler | SAMPLER | — |