Skip to content

GVHMR Motion Capture

Pulls one person's body motion out of a video with GVHMR. The pack author's two bundled workflows as shipped: GVHMR.json (clip + mask video of the same clip, person white on black → GVHMRInference → SMPLViewer) and smpl_to_bvh_pipeline.json (SMPLtoBVH → BVHViewer), joined where the author's tooltip says: SMPLtoBVH reads GVHMRInference's npz_path. Writes <filename_prefix>_motion.bvh, a GLB of the motion (the pack's SMPLToGLB) and smpl_params_*.npz to the node's output folder, plus a preview video for the gallery: HY-Motion's HYMotionPreview2D draws the captured skeleton from the front (azimuth 90), at the clip's fps, up to 500 frames. Licence: GVHMR and its SMPL body model are non-commercial, research and education only. Needs the ComfyUI-MotionCapture (github.com/PozzettiAndrea/ComfyUI-MotionCapture) and ComfyUI-HyMotion (github.com/PozzettiAndrea/ComfyUI-HyMotion) node packs.

Workflow id: gvhmr_mocap · Video → Video

Calling it

POST /api/video/generate
{
  "workflow": "gvhmr_mocap",
  "prompt": "...",
  "video": "...",
  "video_mask": "..."
}

Params

Every input this workflow takes. Your install is the source of truth:GET /api/workflows/gvhmr_mocap returns these as they are on your machine.

  • prompt · str · required
    Not used by the graph; Studio's video endpoint requires one. Describe the clip.
  • video · str · required
    The clip to capture motion from, as a ComfyUI input filename.
  • video_mask · str · required
    Mask video of the same clip, person white on black, same frame count (author's tooltip: e.g. a SAM3 mask rendered to video). ComfyUI input filename on the node; the pack ships tennis_mask.mp4 for tennis.mp4.
  • fps · int · default 30
    Frame rate of the BVH and the preview video. Set it to the clip's own rate (the pack's tennis.mp4 is 60), or both play at the wrong speed.
  • moving_camera · bool · default false
    True when the camera moves; GVHMR then estimates the camera's motion as well.
  • filename_prefix · str · default gvhmr_mocap