VRGDG H3 Load Exact Last Frame
The One Frame the Latent Context Deliberately Leaves Out
- image
VRGDG H3 Load Exact Last Frame looks like the most trivial node in the pack: it opens one image file and returns it as a one-frame batch. Why would that need a custom node at all? Because of what it's paired with. It exists to supply the predecessor scene's real last visible frame, on purpose, at the exact moment the latent continuation is built to stop short of it.
Get the pairing right and your scene transitions land on a genuine frame rather than on whatever token boundary H3 could give you.
Why the frame has to come from outside
H3 builds video in token-sized bites - roughly one frame on the first token, then four frames per token after that. That grid means a latent file's frames and the frames you actually see don't necessarily agree on where things end, and a render often carries a few frames of alignment padding or cool-down past the scene's real end.
So "continue from the last frame" is ambiguous when the handoff is latent-to-latent. The pack's answer, in exact-frame mode: VRGDG H3 Load Latent cuts the context so it ends just before the predecessor's real last visible frame, and this node loads that missing frame from disk as an image so it can be pinned as an explicit anchor. The node's own tooltip says exactly that: "the previous scene's extracted last frame."
What it does with the file
Resolves the path (quotes stripped, made absolute against ComfyUI's working directory), opens it with PIL, applies EXIF rotation via ImageOps.exif_transpose, converts to RGB, normalises to 0–1 float, and returns a [1, H, W, 3] tensor - a batch of exactly one frame, ready for any node that wants an IMAGE. If the file isn't there, it raises a FileNotFoundError with the resolved path in it, which is the most useful possible error.
Like the loaders next to it, it implements IS_CHANGED as a SHA-256 digest of the file. Re-export the last frame and the graph re-runs without you force-refreshing anything.
Its single output is image. Wire it into the core MiniMaxH3AddGuide node that ComfyUI ships with its H3 support - that's the node the pack's Builder chains after the latent guide, pinning the image at the last warm-up frame. Note that VRGDG H3 Apply Latent Continuation Guide does not accept an image: latent context and image anchor are two different conditioning steps, and the builder uses both, in that order.
Practical notes
Give it an absolute path. ComfyUI/output/MyProject/frames/scene_002_last.png beats anything relative - relative paths resolve against ComfyUI's working directory, which is not always the folder you think it is. Forward slashes behave everywhere; if you're pasting a Windows path, watch the backslashes. The node strips stray quotes, so a path copied out of a JSON file is fine.
Expect the anchor to cost you a decision about frame numbers. In the Builder, the image is pinned at warmup_frames - 1, and the latent guide is offset so the context block ends where the image sits. Do it by hand and you own that arithmetic; do it in the Builder and it's computed from the timing plan.
It needs the predecessor rendered by a build that records tail padding. Exact-frame mode depends on knowing how far past the visible end the render ran; a latent saved with padding unknown falls back to plain continuation, with a console note about re-rendering for an exact seam.
Install
Same pack, same steps as the rest of the continuation nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl.git
python -m pip install -r comfyui-vrgamedevgirl/requirements.txt
Or Manager → Install Custom Nodes → search vrgamedev, then restart and hard-refresh the browser tab. The requirements file is far bigger than this node needs - voxcpm, llama-cpp-python, demucs, av - and on Windows portable with Python 3.13 the README's bootstrap (upgrade pip/setuptools/wheel, then Cython scikit-build-core) is what stops llama-cpp-python compiling from scratch.
Honest verdict: if you're working inside the AI Video Builder, exact-frame continuation is the mode that gets you the cleanest cut, and this tiny loader is doing real work inside it. If you're chaining scenes by hand and your renders are short enough that the token grid happens to line up, plain latent continuation plus a trim is less fiddly. Reach for this one when "almost right" seams are the thing driving you up the wall.
One licence footnote worth having on the record: MiniMax H3's open weights ship under a community licence whose Applicable Territory excludes the US, EU, UK and South Korea, so whether you're licensed to run this locally at all is a separate question from whether the nodes work. The hosted Hailuo API is the licensed path in those regions.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| image_path | STRING | Path to the image file, e.g. the previous scene's extracted last frame |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |