Kimodo Sampler
The node that actually makes the motion happen
- model
- conditioning
- motion
This is the heart of the Kimodo Motion Bridge pack: it takes the conditioning from Kimodo Text Encode and the model from Kimodo Load Model and runs the actual diffusion sampling that produces the motion. Everything downstream - previews, NPZ, BVH, Mixamo FBX, Unity, Rive - is just moving what this node hands you. If you use one node in this pack, it's the chain that ends here.
The inputs that matter
It's a diffusion sampler, so the knob set will feel familiar:
duration- seconds per segment, 0.5–30. Default 5.0. If your prompt had three period-separated segments, each one gets 5 seconds, so the clip is 15s. This trips people up constantly.seed- reproducibility. Same seed + same prompt + same everything = same motion.num_samples- 1–16. Generates a batch of variations from one prompt in a single run, which is your variation knob.diffusion_steps- 10–500, default 100. More is cleaner and slower; this is the quality/speed dial.constraints_json(optional) - path to a JSON file of kinematic constraints: pose keyframes, end-effector positions, 2D paths. Leave blank unless you know you need them; it's the pack's power-user path.
Inputs: model and conditioning. Output: one motion object (type KIMODO_MOTION) - a bundle holding joint positions [T, J, 3], global rotation matrices [T, J, 3, 3], root trajectory, foot-contact labels, and heading. That single object feeds every preview and exporter in the pack.
How the sampling actually works
Under the hood it's Kimodo's diffusion model denoising over diffusion_steps iterations to produce frames at the model's native FPS, with your prompt segments stitched into one timeline (multi-prompt segments get smooth transitions handled by the model). Worth knowing: this node deliberately runs without post-processing - foot-skate cleanup was split out into Kimodo Post Process, which you optionally chain after this. G1 (robot) skeletons don't benefit from that cleanup anyway.
Install and first run
Node ships in the whole pack. ComfyUI Manager, search Kimodo Motion Bridge, or:
cd ComfyUI/custom_nodes
git clone https://github.com/GuardSkill/ComfyUI-Kimodo-Bridge.git
cd ComfyUI-Kimodo-Bridge
python -m pip install -r requirements.txt
python install.py
Restart ComfyUI, node lives under Kimodo. Wire Load Model → Text Encode → Sampler, hook a Kimodo Preview onto motion, and queue.
Where people get burned
- Thinking duration is the whole clip. It's per segment. Prompt with two sentences and leave duration at 5 → you get 10s.
- VRAM. Sampling is where the ~17GB appetite of this model shows up in practice. If it OOMs, lower
num_samplesto 1 first - batches multiply memory - before you touch steps. - Foot sliding out of the box. The sampler doesn't clean up foot contact; that's by design. If your character's feet skate across the floor, add Kimodo Post Process rather than blaming the sampler.
- First queue is slow. Model download + load happens on the first run, so don't judge speeds on queue #1.
Start at 100 steps, one sample. Find a motion you like, then raise num_samples to explore, or push steps only if quality needs it.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | KIMODO_MODEL | — | |
| conditioning | KIMODO_COND | — | |
| duration | FLOAT | 5.00.5–30 | Duration in seconds per segment |
| seed | INT | 420–4294967295 | — |
| num_samples | INT | 11–16 | — |
| diffusion_steps | INT | 10010–500 | — |
| constraints_jsonopt | STRING | Path to constraints JSON file (optional) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| motion | KIMODO_MOTION | — |