MiniMax H3 Text / Reference to Image
MiniMax H3 does text-to-image now, with one weird trick
- clip
- vae
- source_image
- ref_images
- positive
- five_frame_latent
- formatted_prompt
H3 doesn't do single images. It's an audiovisual model whose smallest job is five frames, and pretending otherwise makes the model do a weird little video instead of a photograph. MiniMax H3 Text / Reference to Image is VRGameDevGirl's workaround, and it's genuinely clever: it turns your normal image prompt into H3's own vocabulary for "camera completely locked, nothing moves, this is one still picture shot as five identical frames" - then the whole thing behaves like a burst you can pick the best frame from.
Want the whole story in one sentence? Connect source_image and it's reference-based editing through H3; leave source_image empty and it's text-to-image. Either way you get a five-frame burst, not a single latent - decode it, and let the pack's Select Still Frame node choose the keeper.
How the "still image" trick works
H3 is unified-context: text, images and audio all go into one prompt context. So this node's real work is prompt engineering with teeth - it rewrites your request into the model's structured integrated_multimodal_description format, adding explicit "camera is completely locked, all subjects/lighting/hair/particles stay motionless across the entire five-frame burst, treat every frame as the same finished photograph" instructions, plus overall_soundscape: Silence. so the model doesn't try to add ambience. That framing is what makes five frames come out looking like five candidates for one image instead of the first five frames of a clip.
For editing, source_image becomes <Picture 1> in the prompt context. Note the author's deliberate choice: it's not locked as a keyframe, so the model is allowed to change it visibly - that's the difference between "edit this image" and "keep this exact frame as the start of a video." edit_fidelity controls that verbally: preserve tells H3 to keep composition and subject identity unless the edit requires otherwise, balanced (default) allows cleaner changes, creative treats it as a weak reference. There's no numeric reference-strength knob in H3, so this is the closest lever you get.
Inputs and outputs
clip/vae- from your H3 checkpoint loader, same as the video nodes.prompt- the actual edit or scene description in plain English.prompt_format-still_image(default) wraps your prompt in the static-burst vocabulary above;raw_h3passes an already-formatted H3 prompt through unchanged. Useraw_h3if you're iterating on the generatedformatted_promptoutput.edit_fidelityandref_image_size(match is faster, max keeps more reference detail at real VRAM cost).source_image- optional; the image to edit.ref_images- up to 8 auto-growing extra references for identity, outfit, environment, style.
Outputs: positive conditioning, five_frame_latent (sample it, VAE-decode, then feed Select Still Frame), and formatted_prompt - a STRING of exactly what was sent to the model, which is gold for debugging why a shot went weird.
Width/height default to 1344×768; keep frames at a sane aspect for the model.
Install
Same pack, same routine:
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl.git
ComfyUI Manager: search "VRGameDevGirl", install, restart, hard-refresh. Heavy requirements - Cython scikit-build-core first on Windows portable, Python 3.12 preferred, voxcpm/llama-cpp-python will want a compiler if no wheel matches.
Where people get burned
- Editing vs. generating. Hook up
source_imageand expect heavy identity changes; it's not an img2img lock, it's a reference-edit. If you need pixel-level preservation, this isn't the node. - Forgetting the license. The H3 Community License excludes the EU, UK, US and South Korea from running the local weights. Don't let a neat workflow be the thing that gets you to skip that check.
- Not looking at the
formatted_prompt. When a "still" comes out with motion or a camera drift, that string is where the problem lives - usually a prompt that contradicts the lock instructions. - Skipping the Select Still Frame step. The latent is five frames. Decode and pick; every frame is part of the answer.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| vae | VAE | — | |
| prompt | STRING | — | |
| width | INT | 134432–16384 | — |
| height | INT | 76832–16384 | — |
| prompt_format | COMBO | still_image | Wrap a normal image prompt for a static H3 burst, or pass an already-formatted H3 prompt unchanged. |
| edit_fidelity | COMBO | balanced | Prompt-level preservation guidance for the primary source image. H3 does not expose a numeric reference strength. |
| ref_image_size | COMBO | match | Match is faster; max retains more reference detail but can use substantially more VRAM. |
| source_imageopt | IMAGE | Primary image to edit. It becomes <Picture 1> but is not locked as a keyframe, allowing visible changes. | |
| ref_imagesopt | COMFY_AUTOGROW_V3 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| five_frame_latent | LATENT | — |
| formatted_prompt | STRING | — |