MVNT Render Dance Video
When the Dancer Needs to Leave ComfyUI as an MP4
- dance_video
Previewing a dancing GLB in 3D is great until you want to actually use it - post it, edit it, or feed it into a video model. That's the gap MVNT Render Dance Video fills. It's the pack's optional second step: after MVNT Generate Dance has produced a dance_3d GLB, this node asks MVNT's servers to render a proper MP4 from it and hands you a VIDEO you can wire into ComfyUI's video preview or save nodes.
The word "optional" is doing real work here. The motion generation already costs credits; a server-side video render costs more, and you don't need one just to look at the dance. The README's main flow makes the order explicit: generate → preview in 3D (free) → render the MP4 only once you've decided the dance is a keeper.
How it works
The clever part: this node has no API key widget and no job-id input. It figures out which generation you mean by parsing the GLB filename - mvnt_<id>.motion.glb - and pulls the job id out of it. It also reads the sidecar file Generate Dance wrote alongside the GLB to recover the character GLB and audio path, so a retargeted character shows up in the MP4 instead of the default mannequin. It then asks MVNT's server to render the scene (render-internal-scene-video, via the /render-mp4-lda endpoint), and if that path fails it falls back to simply downloading the server's existing preview MP4. Either way you get mvnt_<id>.dance.fetch.mp4 in ComfyUI/output/.
The inputs
dance_3d(STRING, required) - connect thedance_3doutput from MVNT Generate Dance. Don't rename the GLB; the node's whole trick is inferring the job id from that filename.video_profile(enum) - two choices, and this is where the Kling workflow comes from:MVNT Original- the "pretty" profile, a toon studio look. Use this when the MP4 is the final product.Video Reference- the "kling" profile: a deterministic mannequin-style render meant to be a motion reference for Kling motion-transfer video. Use this when the MP4 is an input to something downstream.
One output: dance_video (VIDEO), which connects to ComfyUI's video viewer or a save node.
Installing it
Part of ComfyUI-MVNT. ComfyUI Manager → search MVNT → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/mvnt-app/ComfyUI-MVNT.git comfyui-mvnt
cd comfyui-mvnt
pip install -r requirements.txt
Restart ComfyUI. Dependencies are the pack's usual light set (requests, numpy, soundfile, Pillow). There's no key widget here because it reuses the MVNT_API_KEY environment variable that Generate Dance used - set it once at launch (export MVNT_API_KEY=mvnt_live_xxxxxxxxxxxxx) and both nodes pick it up.
Gotchas
The error people actually hit: "Could not infer job id from dance_3d." That means the GLB got renamed, or you wired something that isn't a mvnt_<id>.motion.glb path - connect the output directly and don't rename it. Second, this node needs a ComfyUI build that has the Comfy Video API; on an older build it errors out about the video API being unavailable, so update ComfyUI. Third, remember the division of labor: this node only produces the reference MP4. Kling motion transfer itself stays downstream, and the Tripo/Kling nodes are separate packs entirely - the README's "advanced" character workflows need those installed on top of this one.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| dance_3d | STRING | — | |
| video_profileopt | COMBO | MVNT Original | 2 options: MVNT Original, Video Reference |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| dance_video | VIDEO | — |