DWposeDeluxe Pose Interpolation
Smooth motion between two poses, without a video model
- keypoints_1
- keypoints_2
- keypoints
Say you've got two poses - a starting stance and an ending stance - and you want the frames in between so you can drive a video with a continuous motion. You could hand-draw every intermediate pose, or you could let this node lerp the keypoints and generate the whole transition for you. That's the entire pitch, and it's genuinely useful for making pose-driven videos without a diffusion model doing the heavy lifting.
How it works
This is plain linear interpolation on keypoint coordinates, and that's a feature. You give it two POSE_KEYPOINT datasets and two frame selectors:
keypoints_1withkeypoints_1_frame- which frame of the first dataset is your starting pose.keypoints_2withkeypoints_2_frame- which frame of the second dataset is your ending pose.frame_count- how many interpolated frames to generate (up to 99).
Set a frame number to -1 and it grabs the last frame of that batch automatically, which is the standard trick for "start at frame 0, end at the last frame."
For each output frame it computes a blend t from 0 to 1 and mixes the start and end keypoints: point = start * (1 - t) + end * t. It does this across all four keypoint subsets (body, face, left hand, right hand) so the whole body transitions smoothly, not just the torso. If both inputs have a face_box, that gets interpolated too.
A few behaviors worth knowing. If a frame contains multiple people, it picks the biggest pose and warns about it - it won't interpolate everyone. If the two canvases have different dimensions, it uses the largest and warns. And if a subset (say, left hand) exists in one pose but not the other, that subset is skipped rather than guessed. The output lands in the first input's coordinate format, so keep both datasets in the same format to avoid weird results.
When you'd reach for it
The author pitches two classic uses: matching a pose to the first frame of a SteadyDancer reference, and creating looped pose-driven videos. For a loop, interpolate from pose A to pose B, then interpolate back from B to A (or just ReverseKeypoints the first half), and you get a seamless cycle.
Pair it with KeypointPrinter to preview what you've generated, then feed the output into your video pipeline. Since the output is standard POSE_KEYPOINT data, everything downstream in the pack just works.
One honest caveat
Linear interpolation between two poses is the simple interpolation. If your two poses are dramatically different (a crouch to a jump), the middle frames will look mechanical - limbs sweep through straight-line paths, and feet can slide through the floor. It's great for subtle transitions and loops, not for physically accurate motion between wildly different stances. The README points to fancier interpolation packs (ComfyUI_pose_inter) if you need per-limb control. For most video-driver work, though, this is exactly the right amount of sophistication.
Installing it
Ships with DWposeDeluxe, so same story as the rest:
cd ComfyUI/custom_nodes/
git clone https://github.com/hobinrude/ComfyUI_DWposeDeluxe
cd ComfyUI_DWposeDeluxe
pip install -r requirements.txt
or search DWposeDeluxe in ComfyUI Manager. No models needed for this node - it only manipulates numbers. If it quietly stops mid-run, remember the pack suppresses errors with InterruptProcessingException; the real reason will be in the console.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| keypoints_1 | POSE_KEYPOINT | — | |
| keypoints_2 | POSE_KEYPOINT | — | |
| keypoints_1_frame | INT | 0 | — |
| keypoints_2_frame | INT | -1 | — |
| frame_count | INT | 11–99 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| keypoints | POSE_KEYPOINT | — |