Nodes/ComfyUI-MimicMotionWrapper/MimicMotion GetPoses
ComfyUI Node

MimicMotion GetPoses

Turn any video into the skeleton map MimicMotion dances to — sized to your character

By kijai·Created 2 years ago·Updated 2 years ago· 524
MimicMotion GetPoses
  • ref_image
  • pose_images
  • poses_with_ref
  • pose_images
include_bodytrue
include_handtrue
include_facetrue

MimicMotion GetPoses is the front end of the pose-driven video pipeline: the node that watches a driving video, extracts a skeleton from every frame, and hands those skeletons to MimicMotion Sampler. In the ControlNet world this is the "preprocessor" role - DWPose under the hood, which the wider ecosystem knows as the improved pose detector with better hand tracking than classic OpenPose.

But it does one thing the generic preprocessors don't, and it's the reason this node exists as a separate step: pose rescaling. MimicMotion needs the driving skeleton and the person in your reference photo to roughly match in scale and position - if the dancer in the video is half the size of your character, the output will be a mess. So GetPoses detects the pose of your ref_image first, then computes a linear scale-and-shift (a least-squares fit over the keypoints) that maps every driving frame's skeleton onto your character's proportions before drawing it. The skeletons you wire into the Sampler are already the right size skeletons. That's the trick that makes "this specific character does this specific dance" actually work.

Inputs and what they mean

  • ref_image - your character. Used both for pose rescaling and as the first drawn skeleton.
  • pose_images - the driving video frames as a batch. Must be the same resolution as ref_image; the node asserts this and will throw otherwise.
  • include_body, include_hand, include_face - which keypoints get drawn into the skeletons. Hands and faces are the expensive bits, so if you're doing a simple full-body routine and every frame takes forever, turning them off is a legitimate speed lever. All default to true, which is right for most dance clips.

The two outputs

  • poses_with_ref - the reference pose prepended to the full sequence. Handy for previewing whether the rescale worked before you burn GPU time sampling.
  • pose_images - just the driven frames. This is the one you wire into the Sampler's pose_images input.

Install

Same pack, same story. ComfyUI Manager → search "ComfyUI-MimicMotionWrapper" → install. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-MimicMotionWrapper
cd ComfyUI-MimicMotionWrapper
pip install -r requirements.txt

On first run the node downloads two small DWPose models - a YOLOX person detector and the DWPose keypoint model, both torchscript - from the hr16 HuggingFace repos into the pack's own models/DWPose folder. That's a couple hundred MB, not the multi-gigabyte download the loader node does.

Common issues

  • Resolution mismatch. ref_image and pose_images must share dimensions. The error message tells you this plainly, but it's the most common first stumble.
  • Slow on long videos. Every frame runs a full detect-and-pose pass. The classic 2024 workflow trick was skipping frames - running every 4th frame of the driving video and letting the sampler's context window smooth it out. Fewer, well-chosen frames beat 60fps of pure pain.
  • Pose is pose, not cloth. The skeletons carry body, hands, and face - nothing about hair or clothing. Fast, complex motion is where MimicMotion's output starts to fall apart, because the pose net simply can't see those degrees of freedom. That's a model limitation, not a node bug.
CategoryMimicMotionWrapper

Inputs (5)

NameTypeDefaultDescription
ref_imageIMAGE
pose_imagesIMAGE
include_bodyBOOLEANtrue
include_handBOOLEANtrue
include_faceBOOLEANtrue

Outputs (2)

NameTypeDescription
poses_with_refIMAGE
pose_imagesIMAGE