H3 Identity Anchor (internal)
Lock your first frame to a reference image — or force the last one
- conditioning
- vae
- latent
- image
- conditioning
Some shots you want to start on, not imply. H3 Identity Anchor (internal) pins a reference image as a stock first or last keyframe on the H3 conditioning, so the clip begins (or ends) exactly on that image. This is the mechanism behind the pack's Keyframes support, and it's notable for what it doesn't do: it uses only core ComfyUI keyframe support - no third-party layout patch, no extra pack.
The idea: H3's conditioning carries keyframe information - specific frame indices that must resolve to specific latents. This node takes an image, crops it to the target canvas (cover-crop, aspect preserved, no distortion), VAE-encodes it, and writes it into the conditioning as a keyframe at frame 0 (if anchor is first) or at frame_count - 1 (if last). It also records the frame count, so the model knows the timeline it's working with.
The inputs that matter:
conditioning,vae,latent- the pieces it needs to encode the image into latent space. The keyframe latent must carry the canvas's latent row count, or the packed layout's fixed-row bookkeeping breaks, which is why width and height are explicit inputs rather than inferred.frame_count(INT, default 124),width(1344),height(768) - the timeline and canvas. The defaults match H3's native resolution (1344x768, the 0.98MP "Native Max" tier).anchor(enum,first/last) - which end of the clip gets pinned.image(optional IMAGE) - wire nothing and the node just passes your conditioning through untouched.
Output is a single conditioning, ready for the sampler.
Where you actually hit this is inside the Keyframes mode workflow, and the pack's author also used it to give the "one node" experience a solid first frame in multi-shot scenes. One gotcha worth knowing, though: ComfyUI 0.32/0.33 had a core bug where conditioning carrying both minimax_keyframes and reference refs (minimax_refs) crashed the sampler - the refs branch overwrote the cond-video latents and the row counts stopped matching. The pack ships a built-in repair for that (it prefers the H3 Motion Context MultiRef pack's patch, with a fallback merge wrapper of its own), but it's the kind of thing that bites if you mix an anchor with R2V references on an older core. If you see a shape mismatch RuntimeError about cond video latents, update ComfyUI - that's the fix for the underlying bug, and the repair is dormant once core handles it natively.
Bottom line: it's an internal utility, but it's a genuinely neat one - the difference between a generation that "contains" your subject and one that opens on it.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | — | |
| vae | VAE | — | |
| latent | LATENT | — | |
| frame_count | INT | 1245–3600 | — |
| width | INT | 134432–16384 | — |
| height | INT | 76832–16384 | — |
| anchor | COMBO | first | 2 options: first, last |
| imageopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |