H3 Exact Recover (24fps frame selection)
The boring node that makes the de-rope honest
- images
- IMAGE
"Exact" is doing a lot of work in this name, and it's all deserved. H3 Exact Recover is the node that turns the Motion Lab's slowed-down, frame-held regeneration back into a normal 24fps clip - by pure frame selection, never resampling. Every frame it hands you is pixel-identical to a generated frame, because it doesn't invent a single pixel.
Why it has to exist
The whole de-rope trick in ComfyUI-MAINodes works like this: H3 smears fast motion because one latent token spans four pixel frames. So the pack re-renders the clip as a slowed version of itself - frames where motion is too fast get held (repeated) to give the model more temporal room - then it has to get you back to the original frame rate. That's this node's job, running at the end of the pipeline. It's the inverse of H3 Time Smear: wherever Time Smear inserted held frames, Recover keeps the first frame of each hold group and drops the repeats.
The clever bit is that holds are integers. Nothing is blended, interpolated, or motion-estimated - recovery is literally "keep these indices, throw away those." That's why a de-rope can come back cleaner than a normal render without the mush you'd get from resampling a smeared source.
The inputs that matter
Only two, and only one needs real thought:
images- the dilated, regenerated frames coming out of your second sampler's VAE decode.hold_map- wire this from the same H3 Time Smear node that produced the frames, specifically itshold_map_usedoutput. This is where beginners trip: grab the map from a different Time Smear (or a copy of the graph) and the frame counts won't line up, and the node will assert on the mismatch. The hold map is the contract between the smear and the recovery; both sides have to read the same one.
Output is a plain IMAGE batch, ready for your video save or preview node. Keep it in the chain after the regeneration pass's VAEDecode and before anything that writes the final file.
Pairing it with audio
The video isn't the whole story. The regenerated clip also carries audio (H3 generates audio jointly with the picture), and that audio is on the slowed clock too. If you retime the video and not the audio, held regions come back rushed. Wire your regenerated audio into H3 Audio Recover with the same hold map and it lines up with this node's output frame for frame. If dialogue matters at all, the two belong in the same workflow.
Installing it
ComfyUI-MAINodes is a pure-Python pack, no extra pip dependencies:
cd ComfyUI/custom_nodes
git clone https://github.com/matlowai/ComfyUI-MAINodes
Restart ComfyUI and look under image/minimax/motion (or search "ComfyUI-MAINodes" in Manager). The pack's example graphs also want ComfyUI-KJNodes for the SageAttention patches, but the nodes themselves run without it. You'll need a MiniMax H3 model to have anything to de-rope in the first place - and note its community license excludes the US, EU, UK and South Korea, so run it where you're allowed to.
One honest aside: this node is almost boring in the best way. It does one arithmetic thing, exactly, and its whole job is to not mess with your pixels. Reach for it by default - the only reason not to is if you specifically want a resampled/interpolated recovery, which this pack deliberately doesn't offer.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| hold_map | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |