ChampRun
The one node that actually generates CHAMP video
- model
- cfg
- vae
- image_enc
- noise_scheduler
- image
- depth_images
- normal_images
- semantic_map_images
- dwpose_images
- IMAGE
ChampLoader spends a minute building the whole CHAMP stack; ChampRun is where your photo actually starts moving. Feed it the reference image, a sequence of depth/normal/pose/semantic guidance maps, and it denoises a video of the person in that photo performing that motion. It's the pack's only generation node, and it's the reason the pack exists.
What makes CHAMP different from the skeleton-only approaches that came before it is that it doesn't trust the stick figure alone. Alongside DWPose it takes depth and normal maps - "3D parametric guidance" in the paper's words - plus a semantic segmentation map. The model gets a real sense of where the body is in space, not just where the joints are. That's what keeps the person's shape consistent while they move, instead of glitching into a paper doll.
How it works
The reference image is encoded by the CLIP image encoder, and its features get injected into the denoising UNet through the ReferenceAttentionControl that ChampLoader wired up - that's the appearance lock. Meanwhile each of the four guidance sequences goes through its own guidance encoder, and the temporal motion module (the AnimateDiff-style one) keeps frames coherent with each other. A DDIM scheduler then runs num_inference_steps denoising passes at your guidance_scale. When it's done, the frames get resized back to your reference image's native resolution, so whatever aspect ratio you start with is what you get out.
The inputs that matter
The first five inputs - model, cfg, vae, image_enc, noise_scheduler - come straight from ChampLoader's outputs; wire them all and never think about them again. Then:
image- the person photo. Only the first frame of the batch is used as the reference.depth_images,normal_images,semantic_map_images,dwpose_images- the guidance sequences. Each is a batch ofIMAGEframes, one per video frame, all the same length and frame-aligned.video_length(16 default) - how many frames you get. This is the old 16-frame wall from the motion-module world; the model's training context lives there.num_inference_steps(20),guidance_scale(3.5),seed(1234) - standard sampling controls. That 3.5 isn't a typo; CHAMP was trained for low guidance, don't crank it like you would a still-image model.
Output
One IMAGE - a batch of frames, exactly video_length of them. The shipped workflow sends it to VHS_VideoCombine to write an mp4, and also loops it into the pack's preview-grid nodes so you can see the guidance next to the result.
Getting the guidance maps is the real project
ChampRun is the easy half. Building the four aligned guidance sequences is where beginners spend the afternoon. The pack's own wf.json does it with the ControlNet Auxiliary Preprocessors pack plus segmentation: MarigoldDepthEstimationVideo for depth, DSINE-NormalMapPreprocessor for normals, DWPreprocessor and DensePosePreprocessor for pose, and GroundingDINO + SAM for the semantic map. All four sequences must have the same frame count and be aligned to each other - that's non-negotiable, mismatched lengths just error out.
Troubleshooting
VRAM is the wall: community reports on the original release put it around 20–23 GB at the default 512×512×16 settings, so plan accordingly (this is a 2024 SD1.5 model - it doesn't have Wan-era optimizations, and nobody's maintaining this pack since April 2024). Slow generation is normal; each pass is a full multi-frame denoise. If frames flicker, your guidance maps are drifting frame to frame - regenerate them with a better preprocessor before blaming the sampler. And remember the output inherits your reference image's resolution, so feed it a clean, well-framed photo to begin with.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| model | Champ | — | |
| cfg | cfg | — | |
| vae | vae | — | |
| image_enc | image_enc | — | |
| noise_scheduler | noise_scheduler | — | |
| image | IMAGE | — | |
| depth_images | IMAGE | — | |
| normal_images | IMAGE | — | |
| semantic_map_images | IMAGE | — | |
| dwpose_images | IMAGE | — | |
| width | INT | 512 | — |
| height | INT | 512 | — |
| video_length | INT | 16 | — |
| num_inference_steps | INT | 20 | — |
| guidance_scale | FLOAT | 3.50 | — |
| seed | INT | 1234 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |