Nodes/H3 Motion Context/H3 Motion Context Load Latent
ComfyUI Node

H3 Motion Context Load Latent

Loading the previous H3 clip's latent, without the quality tax

By NikoDemon80·Created 19 days ago·Updated 10 days ago· 735
H3 Motion Context Load Latent
    • LATENT
    latent_pathh3_context
    clip_index0

    This is the "read" half of the H3 Motion Context pack's latent pair: it loads the previous clip's saved AV latent off disk and hands it to the Motion Context node's context_latent input. That single wire is the difference between a chain with no visible seam and the old lossy way - the previous clip's tail gets sliced straight out of its latent rather than decoded to pixels, resized, and re-encoded, which is where colour drift and softening down a long chain come from. Nothing to configure on the Motion Context side; the loader just makes the file available.

    Why does it need a dedicated node instead of stock Load Latent? Because stock Save/Load Latent can't handle H3's paired video/audio latent - H3 generates picture and sound together, and the file this loader reads holds both streams side by side. It's saved by the matching Save Latent node (tagged h3_motion_context_av_v1), which also knows how to write it.

    Inputs

    Two inputs, and clip_index is the one you'll actually touch:

    • latent_path - a saved latent file or a folder, default h3_context. Relative paths resolve against the ComfyUI output directory. Pointing at a specific file always loads that file, ignoring the index entirely.
    • clip_index - the clip you want to continue from. Making clip 2 from clip 1: set 1 here and 2 on the Save node. Re-rolling clip 2 changes nothing - it reloads slot 1 and overwrites slot 2's reject, which is exactly what you want. Set it to 0 and the loader grabs the newest file in the folder instead. Simpler, but not retry-safe: a re-roll then loads its own rejected audio. Don't use 0 for anything you're going to re-run.

    The filename convention is the part that trips people up. Indexed slots use the natural names - clip_00002.safetensors is clip 2. Auto-saved files (clip_index 0) carry a trailing underscore, clip_00002_.safetensors, because they're numbered by run, not by clip, and indexed loading skips them on purpose so a rejected attempt can't masquerade as a clip slot. If you get a "no saved latent for clip N" error and there's an underscored file sitting right there, the README tells you the fix: rename it to drop the trailing underscore, and it becomes a valid slot.

    Output is a single LATENT. Two constraints worth memorizing. First, it's only for the Motion Context node's context_latent input - don't wire it into a VAE decode. The loader deliberately returns a structure that can't be mistaken for a decodable latent, so the failure mode if you try is loud, not silent. Second, the latent carries the previous clip's resolution, and a latent can't be resized: if you change resolution mid-chain, the Motion Context node refuses and names both resolutions. Regenerate the previous clip at the new size, or start a fresh chain there.

    Install

    Same as the rest of the pack: ComfyUI Manager (search "H3 Motion Context") or git clone https://github.com/NikoDemon80/ComfyUI-H3-Motion-Context into ComfyUI/custom_nodes, then restart. No models to download - it leans on safetensors, which ComfyUI already ships. Leave context_latent unwired entirely for clip 1 of a chain; the loader only enters the picture from clip 2 onward.

    Categoryconditioning/minimax

    Inputs (2)

    NameTypeDefaultDescription
    latent_pathSTRINGh3_contextA saved latent file, or a folder (relative paths resolve against the ComfyUI output directory). Pointing at a specific FILE always loads that file, ignoring clip_index.
    clip_indexINT00–9999The clip to CONTINUE FROM: that clip's slot is loaded. Generating clip 2 from clip 1: set 1 here and 2 on the Save node. 0 = newest file in the folder (NOT retry-safe: a re-roll loads its own rejected audio).

    Outputs (1)

    NameTypeDescription
    LATENTLATENT